Showing preview only (7,169K chars total). Download the full file or copy to clipboard to get everything.
Repository: giandonatoinverso/PHP-Dynamic-Qr-code
Branch: master
Commit: 268a6a3f65c1
Files: 126
Total size: 6.8 MB
Directory structure:
gitextract_zy8zlmoi/
├── .dockerignore
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── docker-compose.yml
├── documentation/
│ ├── assets/
│ │ ├── custom.js
│ │ ├── run_prettify.css
│ │ ├── run_prettify.js
│ │ └── style.css
│ └── index.html
└── src/
├── authenticate.php
├── bulk_action.php
├── config/
│ ├── config.php
│ └── environment.php
├── dist/
│ ├── css/
│ │ ├── adminlte.css
│ │ ├── alt/
│ │ │ ├── adminlte.components.css
│ │ │ ├── adminlte.core.css
│ │ │ ├── adminlte.extra-components.css
│ │ │ ├── adminlte.pages.css
│ │ │ └── adminlte.plugins.css
│ │ └── custom.css
│ └── js/
│ ├── adminlte.js
│ └── custom.js
├── dynamic_qrcode.php
├── dynamic_qrcodes.php
├── forms/
│ ├── filters.php
│ ├── form_dynamic_add.php
│ ├── form_dynamic_edit.php
│ ├── form_static_add.php
│ ├── form_static_edit.php
│ ├── form_users.php
│ ├── logo.php
│ ├── qrcode_options.php
│ ├── static/
│ │ ├── 2fa.php
│ │ ├── bitcoin.php
│ │ ├── bookmark.php
│ │ ├── country-code.html
│ │ ├── email.php
│ │ ├── event.php
│ │ ├── location.php
│ │ ├── paypal.php
│ │ ├── phone.php
│ │ ├── skype.php
│ │ ├── sms.php
│ │ ├── text.php
│ │ ├── timezones.html
│ │ ├── vcard.php
│ │ ├── whatsapp.php
│ │ └── wifi.php
│ ├── table_dynamic.php
│ ├── table_static.php
│ └── table_users.php
├── helpers/
│ └── helpers.php
├── includes/
│ ├── auth_validate.php
│ ├── flash_messages.php
│ ├── footer.php
│ ├── head.php
│ ├── navbar.php
│ ├── search_order.php
│ └── sidebar.php
├── index.php
├── lib/
│ ├── DynamicQrcode/
│ │ └── DynamicQrcode.php
│ ├── ICS/
│ │ └── ICS.php
│ ├── MysqliDb/
│ │ └── MysqliDb.php
│ ├── Qrcode/
│ │ ├── Qrcode-intchil.php
│ │ └── Qrcode.php
│ ├── StaticQrcode/
│ │ └── StaticQrcode.php
│ ├── Users/
│ │ └── Users.php
│ └── vCard/
│ └── vCard.php
├── login.php
├── logout.php
├── plugins/
│ ├── bootstrap/
│ │ └── js/
│ │ ├── bootstrap.bundle.js
│ │ └── bootstrap.js
│ ├── bootstrap-colorpicker/
│ │ ├── css/
│ │ │ └── bootstrap-colorpicker.css
│ │ └── js/
│ │ └── bootstrap-colorpicker.js
│ ├── chart.js/
│ │ ├── Chart.bundle.js
│ │ ├── Chart.css
│ │ └── Chart.js
│ ├── daterangepicker/
│ │ ├── bower.json
│ │ ├── daterangepicker.css
│ │ ├── daterangepicker.js
│ │ ├── example/
│ │ │ ├── amd/
│ │ │ │ ├── index.html
│ │ │ │ ├── main.js
│ │ │ │ └── require.js
│ │ │ └── browserify/
│ │ │ ├── README.md
│ │ │ ├── bundle.js
│ │ │ ├── index.html
│ │ │ └── main.js
│ │ ├── package.js
│ │ ├── website/
│ │ │ ├── index.html
│ │ │ ├── website.css
│ │ │ └── website.js
│ │ ├── website.css
│ │ └── website.js
│ ├── fontawesome-free/
│ │ └── css/
│ │ ├── all.css
│ │ ├── brands.css
│ │ ├── fontawesome.css
│ │ ├── regular.css
│ │ ├── solid.css
│ │ ├── svg-with-js.css
│ │ └── v4-shims.css
│ ├── jquery/
│ │ ├── core.js
│ │ ├── jquery.js
│ │ └── jquery.slim.js
│ ├── jquery-ui/
│ │ ├── AUTHORS.txt
│ │ ├── LICENSE.txt
│ │ ├── external/
│ │ │ └── jquery/
│ │ │ └── jquery.js
│ │ ├── jquery-ui.css
│ │ ├── jquery-ui.js
│ │ ├── jquery-ui.structure.css
│ │ └── jquery-ui.theme.css
│ ├── jquery-validation/
│ │ ├── additional-methods.js
│ │ └── jquery.validate.js
│ ├── moment/
│ │ ├── locales.js
│ │ └── moment-with-locales.js
│ └── overlayScrollbars/
│ ├── css/
│ │ └── OverlayScrollbars.css
│ └── js/
│ ├── OverlayScrollbars.js
│ └── jquery.overlayScrollbars.js
├── read.php
├── saved_qrcode/
│ └── zip/
│ └── .gitkeep
├── static_qrcode.php
├── static_qrcodes.php
├── upgrade/
│ └── upgrade.php
├── user.php
└── users.php
================================================
FILE CONTENTS
================================================
================================================
FILE: .dockerignore
================================================
# Exclude specific directories
src/install/
src/upgrade/
================================================
FILE: .gitignore
================================================
.settings
.project
.idea
.DS_Store
================================================
FILE: Dockerfile
================================================
FROM php:8.3
RUN if [ "$(grep '^VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"')" -eq "9" ]; then \
sed -i -e 's/deb.debian.org/archive.debian.org/g' \
-e 's/security.debian.org/archive.debian.org/g' \
-e '/stretch-updates/d' /etc/apt/sources.list; \
fi
# Download script to install PHP extensions and dependencies
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
curl \
dnsutils \
git \
iputils-ping \
less \
libzip-dev \
libjpeg62-turbo-dev \
libpng-dev \
libfreetype6-dev \
nano \
net-tools \
procps \
tar \
tini \
zip unzip \
# iconv, mbstring and pdo_sqlite are omitted as they are already installed
&& PHP_EXTENSIONS=" \
amqp \
bcmath \
bz2 \
calendar \
event \
exif \
gd \
gettext \
intl \
ldap \
memcached \
mysqli \
opcache \
pdo_mysql \
pdo_pgsql \
pgsql \
redis \
soap \
sockets \
xsl \
zip \
" \
&& case "$PHP_VERSION" in \
5.6.*) PHP_EXTENSIONS="$PHP_EXTENSIONS mcrypt mysql";; \
7.0.*|7.1.*) PHP_EXTENSIONS="$PHP_EXTENSIONS mcrypt";; \
esac \
# Install Imagick from master on PHP >= 8.3, because imagick 3.7.0 broke on latest PHP releases and Imagick maintainers don't care to tag a newer release
&& if [ $(php -r 'echo PHP_VERSION_ID;') -lt 80300 ]; then \
PHP_EXTENSIONS="$PHP_EXTENSIONS imagick"; \
else PHP_EXTENSIONS="$PHP_EXTENSIONS https://api.github.com/repos/Imagick/imagick/tarball/28f27044e435a2b203e32675e942eb8de620ee58"; \
fi \
&& install-php-extensions $PHP_EXTENSIONS \
&& if command -v a2enmod; then a2enmod rewrite; fi
# Install Composer.
ENV PATH=$PATH:/root/composer/vendor/bin \
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/root/composer
RUN cd /opt \
# Download installer and check for its integrity.
&& curl -sSL https://getcomposer.org/installer > composer-setup.php \
&& curl -sSL https://composer.github.io/installer.sha384sum > composer-setup.sha384sum \
&& sha384sum --check composer-setup.sha384sum \
# Install Composer 2.
&& php composer-setup.php --install-dir=/usr/local/bin --filename=composer --2 \
# Remove installer files.
&& rm /opt/composer-setup.php /opt/composer-setup.sha384sum
RUN docker-php-source extract
RUN docker-php-ext-install pdo_mysql zip exif pcntl gd
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install gettext && docker-php-ext-enable gettext
RUN docker-php-ext-install sockets && docker-php-ext-enable sockets
RUN mkdir -p /opt && chmod 777 /opt
WORKDIR /opt
RUN git clone https://github.com/chillerlan/php-qrcode.git \
&& chmod -R 777 ./php-qrcode
RUN cp ./php-qrcode/composer.json /var/www/html/composer.json
RUN mkdir -p /var/www/html/test && chmod 777 /var/www/html/test
RUN cp ./php-qrcode/examples/image.php /var/www/html/test/image.php
RUN cp -R ./php-qrcode/src /var/www/html/
WORKDIR /var/www/html
RUN composer update
COPY ./src ./
RUN chmod 755 *;
EXPOSE 80
CMD ["php", "-S", "0.0.0.0:80"]
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2020 Giandonato Inverso
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<p align="center"><img src="https://www.giandonatoinverso.it/qrcode/dist/img/DynamicQRCode_Original.png"></p>
**PHP Dynamic Qr code** is a script that allows the generation and saving of dynamic and static QR codes. It has a clean, responsive, and user-friendly design. It is based on [AdminLte](https://adminlte.io/), the "Best open source admin dashboard & control panel theme. Built on top of Bootstrap" and [Core PHP Admin Panel](https://github.com/chetans9/core-php-admin-panel), a simple Admin Panel written in core PHP that contains an implementation of general features you might need in your website admin panel like: record management (CRUD), secure authentication, pagination, filters.
[LIVE DEMO](https://qrcode.giandonatoinverso.dev/)
username: admin
password: admin
[DOCUMENTATION](https://giandonatoinverso.it/qrcode/documentation)
# Features
- **#1 Dynamic Qr code generator on GitHub with a database to store Qr codes**
- Create unlimited Qr codes
- Docker compose support
- Control panel with 2 access levels
- Multi-account
- Dashboard with advanced statistics on Qr codes created and on scans
- Bulk download, bulk delete
- Dynamic Qr code
- Create, modify, and delete Qr codes
- You can download your Qr codes when you want
- URL shortener with redirect
- Enable or disable the link redirect
- Static Qr code
- Text QR Code
- Email QR Code
- Phone QR Code
- Sms QR Code
- Whatsapp QR Code
- Skype QR Code
- Location QR Code
- Vcard QR Code
- Event/calendar QR Code
- Bookmark QR Code
- Wifi QR Code
- Paypal QR Code
- Bitcoin QR Code
- Customization of Qr codes
- 6 formats for images
- Foreground color
- Background color
- 4 levels of precision
- 10 sizes
- Responsive bootstrap-based design
- Easy to understand and expand code
- Full OOP with classes and well-documented
## What is included
- PHP files
- .sql file with sample data
- JS files
- CSS files
- Docker compose file
## Setup with docker compose
1. download docker-compose.yml file
2. Start docker stack
```bash
docker compose build --no-cache && docker compose up -d
```
3. Open your browser at http://localhost:80 and login with (username: superadmin, password: superadmin)
================================================
FILE: docker-compose.yml
================================================
version: "3.2"
services:
php-dynamic-qrcode:
image: "giandonatoinverso/php-dynamic-qr-code:latest"
restart: "unless-stopped"
environment:
TYPE: "docker"
QRCODE_GENERATOR: "internal-chillerlan.qrcode"
BASE_URL: "https://mydomain.com"
DATABASE_HOST: "php-dynamic-qrcode-db"
DATABASE_PORT: "3306"
DATABASE_NAME: "qrcode"
DATABASE_USER: "qrcode"
DATABASE_PASSWORD: "changeme"
DATABASE_PREFIX: ""
DATABASE_CHARSET: "utf8"
ports:
- 80:80
depends_on:
- php-dynamic-qrcode-db
volumes:
- php_dynamic_qrcode_saved_qrcode_data:/var/www/html/saved_qrcode
networks:
- php-dynamic-qrcode-network
php-dynamic-qrcode-db:
image: "giandonatoinverso/php-dynamic-qr-code-db:latest"
restart: "unless-stopped"
volumes:
- php_dynamic_qrcode_db_data:/var/lib/mysql
ports:
- '13306:3306'
environment:
MYSQL_ROOT_PASSWORD: "changeme"
MYSQL_DATABASE: "qrcode"
MYSQL_USER: "qrcode"
MYSQL_PASSWORD: "changeme"
networks:
- php-dynamic-qrcode-network
volumes:
php_dynamic_qrcode_db_data:
php_dynamic_qrcode_config_data:
php_dynamic_qrcode_saved_qrcode_data:
networks:
php-dynamic-qrcode-network:
driver: bridge
================================================
FILE: documentation/assets/custom.js
================================================
/* ================================== SCROLL ============================== */
$(function() {
$('a.page-scroll').bind('click', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top + 10
}, 1500, 'easeInOutExpo');
event.preventDefault();
});
});
/**
* Prism: Lightweight, robust, elegant syntax highlighting
* MIT license http://www.opensource.org/licenses/mit-license.php/
* @author Lea Verou http://lea.verou.me
*/(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;f=f.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ");var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data),o);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar,l.language);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r,i){return n.stringify(t.tokenize(e,r),i)},tokenize:function(e,n,r){var i=t.Token,s=[e],o=n.rest;if(o){for(var u in o)n[u]=o[u];delete n.rest}e:for(var u in n){if(!n.hasOwnProperty(u)||!n[u])continue;var a=n[u],f=a.inside,l=!!a.lookbehind,c=0;a=a.pattern||a;for(var h=0;h<s.length;h++){var p=s[h];if(s.length>e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+"</"+s.tag+">"};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();;
Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&/,"&"))});;
Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<|<)style[\w\W]*?(>|>)[\w\W]*?(<|<)\/style(>|>)/ig,inside:{tag:{pattern:/(<|<)style[\w\W]*?(>|>)|(<|<)\/style(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});;
Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}}, number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|(&){1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};
;
Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|throw|catch|finally|null|break|continue)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<|<)script[\w\W]*?(>|>)[\w\W]*?(<|<)\/script(>|>)/ig,inside:{tag:{pattern:/(<|<)script[\w\W]*?(>|>)|(<|<)\/script(>|>)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});
;
Prism.hooks.add("after-highlight",function(e){var t=e.element.parentNode;if(!t||!/pre/i.test(t.nodeName)||t.className.indexOf("line-numbers")===-1){return}var n=1+e.code.split("\n").length;var r;lines=new Array(n);lines=lines.join("<span></span>");r=document.createElement("span");r.className="line-numbers-rows";r.innerHTML=lines;if(t.hasAttribute("data-start")){t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)}e.element.appendChild(r)})
;
$(function(){
$('.navbar li').click(function(e) {
$('.navbar li.active').removeClass('active');
var $this = $(this);
if (!$this.hasClass('active')) {
$this.addClass('active');
}
e.preventDefault();
});
})
================================================
FILE: documentation/assets/run_prettify.css
================================================
/*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */
.prettyprint {
background: #1d1f21;
font-family: Menlo, "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, Consolas, monospace;
border: 0 !important;
}
.pln {
color: #c5c8c6;
}
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
margin-top: 0;
margin-bottom: 0;
color: #969896;
}
li.L0,
li.L1,
li.L2,
li.L3,
li.L4,
li.L5,
li.L6,
li.L7,
li.L8,
li.L9 {
padding-left: 1em;
background-color: #1d1f21;
list-style-type: decimal;
}
@media screen {
/* string content */
.str {
color: #b5bd68;
}
/* keyword */
.kwd {
color: #b294bb;
}
/* comment */
.com {
color: #969896;
}
/* type name */
.typ {
color: #81a2be;
}
/* literal value */
.lit {
color: #de935f;
}
/* punctuation */
.pun {
color: #c5c8c6;
}
/* lisp open bracket */
.opn {
color: #c5c8c6;
}
/* lisp close bracket */
.clo {
color: #c5c8c6;
}
/* markup tag name */
.tag {
color: #cc6666;
}
/* markup attribute name */
.atn {
color: #de935f;
}
/* markup attribute value */
.atv {
color: #8abeb7;
}
/* declaration */
.dec {
color: #de935f;
}
/* variable name */
.var {
color: #cc6666;
}
/* function name */
.fun {
color: #81a2be;
}
}
================================================
FILE: documentation/assets/run_prettify.js
================================================
/**
* @license
* Copyright (C) 2013 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview
* <div style="white-space: pre">
* Looks at query parameters to decide which language handlers and style-sheets
* to load.
*
* Query Parameter Format Effect Default
* +------------------+---------------+------------------------------+--------+
* | autorun= | true | false | If true then prettyPrint() | "true" |
* | | | is called on page load. | |
* +------------------+---------------+------------------------------+--------+
* | lang= | language name | Loads the language handler | Can |
* | | | named "lang-<NAME>.js". | appear |
* | | | See available handlers at | many |
* | | | https://github.com/google/ | times. |
* | | | code-prettify/tree/master/ | |
* | | | src | |
* +------------------+---------------+------------------------------+--------+
* | skin= | skin name | Loads the skin stylesheet | none. |
* | | | named "<NAME>.css". | |
* | | | https://cdn.rawgit.com/ | |
* | | | google/code-prettify/master/ | |
* | | | styles/index.html | |
* +------------------+---------------+------------------------------+--------+
* | callback= | JS identifier | When "prettyPrint" finishes | none |
* | | | window.exports[js_ident] is | |
* | | | called. | |
* | | | The callback must be under | |
* | | | exports to reduce the risk | |
* | | | of XSS via query parameter | |
* | | | injection. | |
* +------------------+---------------+------------------------------+--------+
*
* Exmaples
* .../prettify.js?lang=css&skin=sunburst
* 1. Loads the CSS language handler which can be used to prettify CSS
* stylesheets, HTML <style> element bodies and style="..." attributes
* values.
* 2. Loads the sunburst.css stylesheet instead of the default prettify.css
* stylesheet.
* A gallery of stylesheets is available at
* https://cdn.rawgit.com/google/code-prettify/master/styles/index.html
* 3. Since autorun=false is not specified, calls prettyPrint() on page load.
* </div>
*/
/**
* @typedef {!Array.<number|string>}
* Alternating indices and the decorations that should be inserted there.
* The indices are monotonically increasing.
*/
var DecorationsT;
/**
* @typedef {!{
* sourceNode: !Element,
* pre: !(number|boolean),
* langExtension: ?string,
* numberLines: ?(number|boolean),
* sourceCode: ?string,
* spans: ?(Array.<number|Node>),
* basePos: ?number,
* decorations: ?DecorationsT
* }}
* <dl>
* <dt>sourceNode<dd>the element containing the source
* <dt>sourceCode<dd>source as plain text
* <dt>pre<dd>truthy if white-space in text nodes
* should be considered significant.
* <dt>spans<dd> alternating span start indices into source
* and the text node or element (e.g. {@code <BR>}) corresponding to that
* span.
* <dt>decorations<dd>an array of style classes preceded
* by the position at which they start in job.sourceCode in order
* <dt>basePos<dd>integer position of this.sourceCode in the larger chunk of
* source.
* </dl>
*/
var JobT;
/**
* @typedef {!{
* sourceCode: string,
* spans: !(Array.<number|Node>)
* }}
* <dl>
* <dt>sourceCode<dd>source as plain text
* <dt>spans<dd> alternating span start indices into source
* and the text node or element (e.g. {@code <BR>}) corresponding to that
* span.
* </dl>
*/
var SourceSpansT;
/** @define {boolean} */
var IN_GLOBAL_SCOPE = false;
(function () {
"use strict";
var win = window;
var doc = document;
var root = doc.documentElement;
var head = doc['head'] || doc.getElementsByTagName("head")[0] || root;
// From http://javascript.nwbox.com/ContentLoaded/contentloaded.js
// Author: Diego Perini (diego.perini at gmail.com)
// Summary: cross-browser wrapper for DOMContentLoaded
// Updated: 20101020
// License: MIT
// Version: 1.2
function contentLoaded(callback) {
var addEventListener = doc['addEventListener'];
var done = false, top = true,
add = addEventListener ? 'addEventListener' : 'attachEvent',
rem = addEventListener ? 'removeEventListener' : 'detachEvent',
pre = addEventListener ? '' : 'on',
init = function(e) {
if (e.type == 'readystatechange' && doc.readyState != 'complete') {
return;
}
(e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);
if (!done && (done = true)) { callback.call(win, e.type || e); }
},
poll = function() {
try {
root.doScroll('left');
} catch(e) {
win.setTimeout(poll, 50);
return;
}
init('poll');
};
if (doc.readyState == 'complete') {
callback.call(win, 'lazy');
} else {
if (doc.createEventObject && root.doScroll) {
try { top = !win.frameElement; } catch(e) { }
if (top) { poll(); }
}
doc[add](pre + 'DOMContentLoaded', init, false);
doc[add](pre + 'readystatechange', init, false);
win[add](pre + 'load', init, false);
}
}
// Given a list of URLs to stylesheets, loads the first that loads without
// triggering an error event.
function loadStylesheetsFallingBack(stylesheets) {
var n = stylesheets.length;
function load(i) {
if (i === n) { return; }
var link = doc.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
if (i + 1 < n) {
// http://pieisgood.org/test/script-link-events/ indicates that many
// versions of IE do not support onerror on <link>s, though
// http://msdn.microsoft.com/en-us/library/ie/ms535848(v=vs.85).aspx
// indicates that recent IEs do support error.
link.error = link.onerror = function () { load(i + 1); };
}
link.href = stylesheets[i];
head.appendChild(link);
}
load(0);
}
var scriptQuery = '';
// Look for the <script> node that loads this script to get its parameters.
// This starts looking at the end instead of just considering the last
// because deferred and async scripts run out of order.
// If the script is loaded twice, then this will run in reverse order.
var scripts = doc.getElementsByTagName('script');
for (var i = scripts.length; --i >= 0;) {
var script = scripts[i];
var match = script.src.match(
/^[^?#]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);
if (match) {
scriptQuery = match[1] || '';
// Remove the script from the DOM so that multiple runs at least run
// multiple times even if parameter sets are interpreted in reverse
// order.
script.parentNode.removeChild(script);
break;
}
}
// Pull parameters into local variables.
var autorun = true;
var langs = [];
var skins = [];
var callbacks = [];
scriptQuery.replace(
/[?&]([^&=]+)=([^&]+)/g,
function (_, name, value) {
value = decodeURIComponent(value);
name = decodeURIComponent(name);
if (name == 'autorun') { autorun = !/^[0fn]/i.test(value); } else
if (name == 'lang') { langs.push(value); } else
if (name == 'skin') { skins.push(value); } else
if (name == 'callback') { callbacks.push(value); }
});
// Use https to avoid mixed content warnings in client pages and to
// prevent a MITM from rewrite prettify mid-flight.
// This only works if this script is loaded via https : something
// over which we exercise no control.
var LOADER_BASE_URL =
'https://cdn.rawgit.com/google/code-prettify/master/loader';
for (var i = 0, n = langs.length; i < n; ++i) (function (lang) {
var script = doc.createElement("script");
// Excerpted from jQuery.ajaxTransport("script") to fire events when
// a script is finished loading.
// Attach handlers for each script
script.onload = script.onerror = script.onreadystatechange = function () {
if (script && (
!script.readyState || /loaded|complete/.test(script.readyState))) {
// Handle memory leak in IE
script.onerror = script.onload = script.onreadystatechange = null;
--pendingLanguages;
checkPendingLanguages();
// Remove the script
if (script.parentNode) {
script.parentNode.removeChild(script);
}
script = null;
}
};
script.type = 'text/javascript';
script.src = LOADER_BASE_URL
+ '/lang-' + encodeURIComponent(langs[i]) + '.js';
// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
head.insertBefore(script, head.firstChild);
})(langs[i]);
var pendingLanguages = langs.length;
function checkPendingLanguages() {
if (!pendingLanguages) {
win.setTimeout(onLangsLoaded, 0);
}
}
var skinUrls = [];
for (var i = 0, n = skins.length; i < n; ++i) {
skinUrls.push(LOADER_BASE_URL
+ '/skins/' + encodeURIComponent(skins[i]) + '.css');
}
skinUrls.push(LOADER_BASE_URL + '/prettify.css');
loadStylesheetsFallingBack(skinUrls);
var prettyPrint = (function () {
/**
* @license
* Copyright (C) 2006 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview
* some functions for browser-side pretty printing of code contained in html.
*
* <p>
* For a fairly comprehensive set of languages see the
* <a href="https://github.com/google/code-prettify#for-which-languages-does-it-work">README</a>
* file that came with this source. At a minimum, the lexer should work on a
* number of languages including C and friends, Java, Python, Bash, SQL, HTML,
* XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
* and a subset of Perl, but, because of commenting conventions, doesn't work on
* Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
* <p>
* Usage: <ol>
* <li> include this source file in an html page via
* {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
* <li> define style rules. See the example page for examples.
* <li> mark the {@code <pre>} and {@code <code>} tags in your source with
* {@code class=prettyprint.}
* You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
* printer needs to do more substantial DOM manipulations to support that, so
* some css styles may not be preserved.
* </ol>
* That's it. I wanted to keep the API as simple as possible, so there's no
* need to specify which language the code is in, but if you wish, you can add
* another class to the {@code <pre>} or {@code <code>} element to specify the
* language, as in {@code <pre class="prettyprint lang-java">}. Any class that
* starts with "lang-" followed by a file extension, specifies the file type.
* See the "lang-*.js" files in this directory for code that implements
* per-language file handlers.
* <p>
* Change log:<br>
* cbeust, 2006/08/22
* <blockquote>
* Java annotations (start with "@") are now captured as literals ("lit")
* </blockquote>
* @requires console
*/
// JSLint declarations
/*global console, document, navigator, setTimeout, window, define */
/**
* {@type !{
* 'createSimpleLexer': function (Array, Array): (function (JobT)),
* 'registerLangHandler': function (function (JobT), Array.<string>),
* 'PR_ATTRIB_NAME': string,
* 'PR_ATTRIB_NAME': string,
* 'PR_ATTRIB_VALUE': string,
* 'PR_COMMENT': string,
* 'PR_DECLARATION': string,
* 'PR_KEYWORD': string,
* 'PR_LITERAL': string,
* 'PR_NOCODE': string,
* 'PR_PLAIN': string,
* 'PR_PUNCTUATION': string,
* 'PR_SOURCE': string,
* 'PR_STRING': string,
* 'PR_TAG': string,
* 'PR_TYPE': string,
* 'prettyPrintOne': function (string, string, number|boolean),
* 'prettyPrint': function (?function, ?(HTMLElement|HTMLDocument))
* }}
* @const
*/
var PR;
/**
* Split {@code prettyPrint} into multiple timeouts so as not to interfere with
* UI events.
* If set to {@code false}, {@code prettyPrint()} is synchronous.
*/
window['PR_SHOULD_USE_CONTINUATION'] = true;
/**
* Pretty print a chunk of code.
* @param {string} sourceCodeHtml The HTML to pretty print.
* @param {string} opt_langExtension The language name to use.
* Typically, a filename extension like 'cpp' or 'java'.
* @param {number|boolean} opt_numberLines True to number lines,
* or the 1-indexed number of the first line in sourceCodeHtml.
* @return {string} code as html, but prettier
*/
var prettyPrintOne;
/**
* Find all the {@code <pre>} and {@code <code>} tags in the DOM with
* {@code class=prettyprint} and prettify them.
*
* @param {Function} opt_whenDone called when prettifying is done.
* @param {HTMLElement|HTMLDocument} opt_root an element or document
* containing all the elements to pretty print.
* Defaults to {@code document.body}.
*/
var prettyPrint;
(function () {
var win = window;
// Keyword lists for various languages.
// We use things that coerce to strings to make them compact when minified
// and to defeat aggressive optimizers that fold large string constants.
var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
"double,enum,extern,float,goto,inline,int,long,register,short,signed," +
"sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
"new,operator,private,protected,public,this,throw,true,try,typeof"];
var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
"concept,concept_map,const_cast,constexpr,decltype,delegate," +
"dynamic_cast,explicit,export,friend,generic,late_check," +
"mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
"static_cast,template,typeid,typename,using,virtual,where"];
var JAVA_KEYWORDS = [COMMON_KEYWORDS,
"abstract,assert,boolean,byte,extends,finally,final,implements,import," +
"instanceof,interface,null,native,package,strictfp,super,synchronized," +
"throws,transient"];
var CSHARP_KEYWORDS = [COMMON_KEYWORDS,
"abstract,as,async,await,base,bool,by,byte,checked,decimal,delegate,descending," +
"dynamic,event,finally,fixed,foreach,from,group,implicit,in,interface," +
"internal,into,is,let,lock,null,object,out,override,orderby,params," +
"partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong," +
"unchecked,unsafe,ushort,var,virtual,where"];
var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
"for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
"throw,true,try,unless,until,when,while,yes";
var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
"debugger,eval,export,function,get,instanceof,null,set,undefined," +
"var,with,Infinity,NaN"];
var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
"goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
"sub,undef,unless,until,use,wantarray,while,BEGIN,END";
var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
"elif,except,exec,finally,from,global,import,in,is,lambda," +
"nonlocal,not,or,pass,print,raise,try,with,yield," +
"False,True,None"];
var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
"def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
"rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
"BEGIN,END"];
var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
"function,in,local,set,then,until"];
var ALL_KEYWORDS = [
CPP_KEYWORDS, CSHARP_KEYWORDS, JAVA_KEYWORDS, JSCRIPT_KEYWORDS,
PERL_KEYWORDS, PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
// token style names. correspond to css classes
/**
* token style for a string literal
* @const
*/
var PR_STRING = 'str';
/**
* token style for a keyword
* @const
*/
var PR_KEYWORD = 'kwd';
/**
* token style for a comment
* @const
*/
var PR_COMMENT = 'com';
/**
* token style for a type
* @const
*/
var PR_TYPE = 'typ';
/**
* token style for a literal value. e.g. 1, null, true.
* @const
*/
var PR_LITERAL = 'lit';
/**
* token style for a punctuation string.
* @const
*/
var PR_PUNCTUATION = 'pun';
/**
* token style for plain text.
* @const
*/
var PR_PLAIN = 'pln';
/**
* token style for an sgml tag.
* @const
*/
var PR_TAG = 'tag';
/**
* token style for a markup declaration such as a DOCTYPE.
* @const
*/
var PR_DECLARATION = 'dec';
/**
* token style for embedded source.
* @const
*/
var PR_SOURCE = 'src';
/**
* token style for an sgml attribute name.
* @const
*/
var PR_ATTRIB_NAME = 'atn';
/**
* token style for an sgml attribute value.
* @const
*/
var PR_ATTRIB_VALUE = 'atv';
/**
* A class that indicates a section of markup that is not code, e.g. to allow
* embedding of line numbers within code listings.
* @const
*/
var PR_NOCODE = 'nocode';
/**
* A set of tokens that can precede a regular expression literal in
* javascript
* http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
* has the full list, but I've removed ones that might be problematic when
* seen in languages that don't support regular expression literals.
*
* <p>Specifically, I've removed any keywords that can't precede a regexp
* literal in a syntactically legal javascript program, and I've removed the
* "in" keyword since it's not a keyword in many languages, and might be used
* as a count of inches.
*
* <p>The link above does not accurately describe EcmaScript rules since
* it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
* very well in practice.
*
* @private
* @const
*/
var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
// CAVEAT: this does not properly handle the case where a regular
// expression immediately follows another since a regular expression may
// have flags for case-sensitivity and the like. Having regexp tokens
// adjacent is not valid in any language I'm aware of, so I'm punting.
// TODO: maybe style special characters inside a regexp as punctuation.
/**
* Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
* matches the union of the sets of strings matched by the input RegExp.
* Since it matches globally, if the input strings have a start-of-input
* anchor (/^.../), it is ignored for the purposes of unioning.
* @param {Array.<RegExp>} regexs non multiline, non-global regexs.
* @return {RegExp} a global regex.
*/
function combinePrefixPatterns(regexs) {
var capturedGroupIndex = 0;
var needToFoldCase = false;
var ignoreCase = false;
for (var i = 0, n = regexs.length; i < n; ++i) {
var regex = regexs[i];
if (regex.ignoreCase) {
ignoreCase = true;
} else if (/[a-z]/i.test(regex.source.replace(
/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
needToFoldCase = true;
ignoreCase = false;
break;
}
}
var escapeCharToCodeUnit = {
'b': 8,
't': 9,
'n': 0xa,
'v': 0xb,
'f': 0xc,
'r': 0xd
};
function decodeEscape(charsetPart) {
var cc0 = charsetPart.charCodeAt(0);
if (cc0 !== 92 /* \\ */) {
return cc0;
}
var c1 = charsetPart.charAt(1);
cc0 = escapeCharToCodeUnit[c1];
if (cc0) {
return cc0;
} else if ('0' <= c1 && c1 <= '7') {
return parseInt(charsetPart.substring(1), 8);
} else if (c1 === 'u' || c1 === 'x') {
return parseInt(charsetPart.substring(2), 16);
} else {
return charsetPart.charCodeAt(1);
}
}
function encodeEscape(charCode) {
if (charCode < 0x20) {
return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
}
var ch = String.fromCharCode(charCode);
return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
? "\\" + ch : ch;
}
function caseFoldCharset(charSet) {
var charsetParts = charSet.substring(1, charSet.length - 1).match(
new RegExp(
'\\\\u[0-9A-Fa-f]{4}'
+ '|\\\\x[0-9A-Fa-f]{2}'
+ '|\\\\[0-3][0-7]{0,2}'
+ '|\\\\[0-7]{1,2}'
+ '|\\\\[\\s\\S]'
+ '|-'
+ '|[^-\\\\]',
'g'));
var ranges = [];
var inverse = charsetParts[0] === '^';
var out = ['['];
if (inverse) { out.push('^'); }
for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
var p = charsetParts[i];
if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
out.push(p);
} else {
var start = decodeEscape(p);
var end;
if (i + 2 < n && '-' === charsetParts[i + 1]) {
end = decodeEscape(charsetParts[i + 2]);
i += 2;
} else {
end = start;
}
ranges.push([start, end]);
// If the range might intersect letters, then expand it.
// This case handling is too simplistic.
// It does not deal with non-latin case folding.
// It works for latin source code identifiers though.
if (!(end < 65 || start > 122)) {
if (!(end < 65 || start > 90)) {
ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
}
if (!(end < 97 || start > 122)) {
ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
}
}
}
}
// [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
// -> [[1, 12], [14, 14], [16, 17]]
ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
var consolidatedRanges = [];
var lastRange = [];
for (var i = 0; i < ranges.length; ++i) {
var range = ranges[i];
if (range[0] <= lastRange[1] + 1) {
lastRange[1] = Math.max(lastRange[1], range[1]);
} else {
consolidatedRanges.push(lastRange = range);
}
}
for (var i = 0; i < consolidatedRanges.length; ++i) {
var range = consolidatedRanges[i];
out.push(encodeEscape(range[0]));
if (range[1] > range[0]) {
if (range[1] + 1 > range[0]) { out.push('-'); }
out.push(encodeEscape(range[1]));
}
}
out.push(']');
return out.join('');
}
function allowAnywhereFoldCaseAndRenumberGroups(regex) {
// Split into character sets, escape sequences, punctuation strings
// like ('(', '(?:', ')', '^'), and runs of characters that do not
// include any of the above.
var parts = regex.source.match(
new RegExp(
'(?:'
+ '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ '|\\\\[0-9]+' // a back-reference or octal escape
+ '|\\\\[^ux0-9]' // other escape sequence
+ '|\\(\\?[:!=]' // start of a non-capturing group
+ '|[\\(\\)\\^]' // start/end of a group, or line start
+ '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ ')',
'g'));
var n = parts.length;
// Maps captured group numbers to the number they will occupy in
// the output or to -1 if that has not been determined, or to
// undefined if they need not be capturing in the output.
var capturedGroups = [];
// Walk over and identify back references to build the capturedGroups
// mapping.
for (var i = 0, groupIndex = 0; i < n; ++i) {
var p = parts[i];
if (p === '(') {
// groups are 1-indexed, so max group index is count of '('
++groupIndex;
} else if ('\\' === p.charAt(0)) {
var decimalValue = +p.substring(1);
if (decimalValue) {
if (decimalValue <= groupIndex) {
capturedGroups[decimalValue] = -1;
} else {
// Replace with an unambiguous escape sequence so that
// an octal escape sequence does not turn into a backreference
// to a capturing group from an earlier regex.
parts[i] = encodeEscape(decimalValue);
}
}
}
}
// Renumber groups and reduce capturing groups to non-capturing groups
// where possible.
for (var i = 1; i < capturedGroups.length; ++i) {
if (-1 === capturedGroups[i]) {
capturedGroups[i] = ++capturedGroupIndex;
}
}
for (var i = 0, groupIndex = 0; i < n; ++i) {
var p = parts[i];
if (p === '(') {
++groupIndex;
if (!capturedGroups[groupIndex]) {
parts[i] = '(?:';
}
} else if ('\\' === p.charAt(0)) {
var decimalValue = +p.substring(1);
if (decimalValue && decimalValue <= groupIndex) {
parts[i] = '\\' + capturedGroups[decimalValue];
}
}
}
// Remove any prefix anchors so that the output will match anywhere.
// ^^ really does mean an anchored match though.
for (var i = 0; i < n; ++i) {
if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
}
// Expand letters to groups to handle mixing of case-sensitive and
// case-insensitive patterns if necessary.
if (regex.ignoreCase && needToFoldCase) {
for (var i = 0; i < n; ++i) {
var p = parts[i];
var ch0 = p.charAt(0);
if (p.length >= 2 && ch0 === '[') {
parts[i] = caseFoldCharset(p);
} else if (ch0 !== '\\') {
// TODO: handle letters in numeric escapes.
parts[i] = p.replace(
/[a-zA-Z]/g,
function (ch) {
var cc = ch.charCodeAt(0);
return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
});
}
}
}
return parts.join('');
}
var rewritten = [];
for (var i = 0, n = regexs.length; i < n; ++i) {
var regex = regexs[i];
if (regex.global || regex.multiline) { throw new Error('' + regex); }
rewritten.push(
'(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
}
return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
}
/**
* Split markup into a string of source code and an array mapping ranges in
* that string to the text nodes in which they appear.
*
* <p>
* The HTML DOM structure:</p>
* <pre>
* (Element "p"
* (Element "b"
* (Text "print ")) ; #1
* (Text "'Hello '") ; #2
* (Element "br") ; #3
* (Text " + 'World';")) ; #4
* </pre>
* <p>
* corresponds to the HTML
* {@code <p><b>print </b>'Hello '<br> + 'World';</p>}.</p>
*
* <p>
* It will produce the output:</p>
* <pre>
* {
* sourceCode: "print 'Hello '\n + 'World';",
* // 1 2
* // 012345678901234 5678901234567
* spans: [0, #1, 6, #2, 14, #3, 15, #4]
* }
* </pre>
* <p>
* where #1 is a reference to the {@code "print "} text node above, and so
* on for the other text nodes.
* </p>
*
* <p>
* The {@code} spans array is an array of pairs. Even elements are the start
* indices of substrings, and odd elements are the text nodes (or BR elements)
* that contain the text for those substrings.
* Substrings continue until the next index or the end of the source.
* </p>
*
* @param {Node} node an HTML DOM subtree containing source-code.
* @param {boolean|number} isPreformatted truthy if white-space in
* text nodes should be considered significant.
* @return {SourceSpansT} source code and the nodes in which they occur.
*/
function extractSourceSpans(node, isPreformatted) {
var nocode = /(?:^|\s)nocode(?:\s|$)/;
var chunks = [];
var length = 0;
var spans = [];
var k = 0;
function walk(node) {
var type = node.nodeType;
if (type == 1) { // Element
if (nocode.test(node.className)) { return; }
for (var child = node.firstChild; child; child = child.nextSibling) {
walk(child);
}
var nodeName = node.nodeName.toLowerCase();
if ('br' === nodeName || 'li' === nodeName) {
chunks[k] = '\n';
spans[k << 1] = length++;
spans[(k++ << 1) | 1] = node;
}
} else if (type == 3 || type == 4) { // Text
var text = node.nodeValue;
if (text.length) {
if (!isPreformatted) {
text = text.replace(/[ \t\r\n]+/g, ' ');
} else {
text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
}
// TODO: handle tabs here?
chunks[k] = text;
spans[k << 1] = length;
length += text.length;
spans[(k++ << 1) | 1] = node;
}
}
}
walk(node);
return {
sourceCode: chunks.join('').replace(/\n$/, ''),
spans: spans
};
}
/**
* Apply the given language handler to sourceCode and add the resulting
* decorations to out.
* @param {!Element} sourceNode
* @param {number} basePos the index of sourceCode within the chunk of source
* whose decorations are already present on out.
* @param {string} sourceCode
* @param {function(JobT)} langHandler
* @param {DecorationsT} out
*/
function appendDecorations(
sourceNode, basePos, sourceCode, langHandler, out) {
if (!sourceCode) { return; }
/** @type {JobT} */
var job = {
sourceNode: sourceNode,
pre: 1,
langExtension: null,
numberLines: null,
sourceCode: sourceCode,
spans: null,
basePos: basePos,
decorations: null
};
langHandler(job);
out.push.apply(out, job.decorations);
}
var notWs = /\S/;
/**
* Given an element, if it contains only one child element and any text nodes
* it contains contain only space characters, return the sole child element.
* Otherwise returns undefined.
* <p>
* This is meant to return the CODE element in {@code <pre><code ...>} when
* there is a single child element that contains all the non-space textual
* content, but not to return anything where there are multiple child elements
* as in {@code <pre><code>...</code><code>...</code></pre>} or when there
* is textual content.
*/
function childContentWrapper(element) {
var wrapper = undefined;
for (var c = element.firstChild; c; c = c.nextSibling) {
var type = c.nodeType;
wrapper = (type === 1) // Element Node
? (wrapper ? element : c)
: (type === 3) // Text Node
? (notWs.test(c.nodeValue) ? element : wrapper)
: wrapper;
}
return wrapper === element ? undefined : wrapper;
}
/** Given triples of [style, pattern, context] returns a lexing function,
* The lexing function interprets the patterns to find token boundaries and
* returns a decoration list of the form
* [index_0, style_0, index_1, style_1, ..., index_n, style_n]
* where index_n is an index into the sourceCode, and style_n is a style
* constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
* all characters in sourceCode[index_n-1:index_n].
*
* The stylePatterns is a list whose elements have the form
* [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
*
* Style is a style constant like PR_PLAIN, or can be a string of the
* form 'lang-FOO', where FOO is a language extension describing the
* language of the portion of the token in $1 after pattern executes.
* E.g., if style is 'lang-lisp', and group 1 contains the text
* '(hello (world))', then that portion of the token will be passed to the
* registered lisp handler for formatting.
* The text before and after group 1 will be restyled using this decorator
* so decorators should take care that this doesn't result in infinite
* recursion. For example, the HTML lexer rule for SCRIPT elements looks
* something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
* '<script>foo()<\/script>', which would cause the current decorator to
* be called with '<script>' which would not match the same rule since
* group 1 must not be empty, so it would be instead styled as PR_TAG by
* the generic tag rule. The handler registered for the 'js' extension would
* then be called with 'foo()', and finally, the current decorator would
* be called with '<\/script>' which would not match the original rule and
* so the generic tag rule would identify it as a tag.
*
* Pattern must only match prefixes, and if it matches a prefix, then that
* match is considered a token with the same style.
*
* Context is applied to the last non-whitespace, non-comment token
* recognized.
*
* Shortcut is an optional string of characters, any of which, if the first
* character, gurantee that this pattern and only this pattern matches.
*
* @param {Array} shortcutStylePatterns patterns that always start with
* a known character. Must have a shortcut string.
* @param {Array} fallthroughStylePatterns patterns that will be tried in
* order if the shortcut ones fail. May have shortcuts.
*
* @return {function (JobT)} a function that takes an undecorated job and
* attaches a list of decorations.
*/
function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
var shortcuts = {};
var tokenizer;
(function () {
var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
var allRegexs = [];
var regexKeys = {};
for (var i = 0, n = allPatterns.length; i < n; ++i) {
var patternParts = allPatterns[i];
var shortcutChars = patternParts[3];
if (shortcutChars) {
for (var c = shortcutChars.length; --c >= 0;) {
shortcuts[shortcutChars.charAt(c)] = patternParts;
}
}
var regex = patternParts[1];
var k = '' + regex;
if (!regexKeys.hasOwnProperty(k)) {
allRegexs.push(regex);
regexKeys[k] = null;
}
}
allRegexs.push(/[\0-\uffff]/);
tokenizer = combinePrefixPatterns(allRegexs);
})();
var nPatterns = fallthroughStylePatterns.length;
/**
* Lexes job.sourceCode and attaches an output array job.decorations of
* style classes preceded by the position at which they start in
* job.sourceCode in order.
*
* @type{function (JobT)}
*/
var decorate = function (job) {
var sourceCode = job.sourceCode, basePos = job.basePos;
var sourceNode = job.sourceNode;
/** Even entries are positions in source in ascending order. Odd enties
* are style markers (e.g., PR_COMMENT) that run from that position until
* the end.
* @type {DecorationsT}
*/
var decorations = [basePos, PR_PLAIN];
var pos = 0; // index into sourceCode
var tokens = sourceCode.match(tokenizer) || [];
var styleCache = {};
for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
var token = tokens[ti];
var style = styleCache[token];
var match = void 0;
var isEmbedded;
if (typeof style === 'string') {
isEmbedded = false;
} else {
var patternParts = shortcuts[token.charAt(0)];
if (patternParts) {
match = token.match(patternParts[1]);
style = patternParts[0];
} else {
for (var i = 0; i < nPatterns; ++i) {
patternParts = fallthroughStylePatterns[i];
match = token.match(patternParts[1]);
if (match) {
style = patternParts[0];
break;
}
}
if (!match) { // make sure that we make progress
style = PR_PLAIN;
}
}
isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
if (isEmbedded && !(match && typeof match[1] === 'string')) {
isEmbedded = false;
style = PR_SOURCE;
}
if (!isEmbedded) { styleCache[token] = style; }
}
var tokenStart = pos;
pos += token.length;
if (!isEmbedded) {
decorations.push(basePos + tokenStart, style);
} else { // Treat group 1 as an embedded block of source code.
var embeddedSource = match[1];
var embeddedSourceStart = token.indexOf(embeddedSource);
var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
if (match[2]) {
// If embeddedSource can be blank, then it would match at the
// beginning which would cause us to infinitely recurse on the
// entire token, so we catch the right context in match[2].
embeddedSourceEnd = token.length - match[2].length;
embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
}
var lang = style.substring(5);
// Decorate the left of the embedded source
appendDecorations(
sourceNode,
basePos + tokenStart,
token.substring(0, embeddedSourceStart),
decorate, decorations);
// Decorate the embedded source
appendDecorations(
sourceNode,
basePos + tokenStart + embeddedSourceStart,
embeddedSource,
langHandlerForExtension(lang, embeddedSource),
decorations);
// Decorate the right of the embedded section
appendDecorations(
sourceNode,
basePos + tokenStart + embeddedSourceEnd,
token.substring(embeddedSourceEnd),
decorate, decorations);
}
}
job.decorations = decorations;
};
return decorate;
}
/** returns a function that produces a list of decorations from source text.
*
* This code treats ", ', and ` as string delimiters, and \ as a string
* escape. It does not recognize perl's qq() style strings.
* It has no special handling for double delimiter escapes as in basic, or
* the tripled delimiters used in python, but should work on those regardless
* although in those cases a single string literal may be broken up into
* multiple adjacent string literals.
*
* It recognizes C, C++, and shell style comments.
*
* @param {Object} options a set of optional parameters.
* @return {function (JobT)} a function that examines the source code
* in the input job and builds a decoration list which it attaches to
* the job.
*/
function sourceDecorator(options) {
var shortcutStylePatterns = [], fallthroughStylePatterns = [];
if (options['tripleQuotedStrings']) {
// '''multi-line-string''', 'single-line-string', and double-quoted
shortcutStylePatterns.push(
[PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
null, '\'"']);
} else if (options['multiLineStrings']) {
// 'multi-line-string', "multi-line-string"
shortcutStylePatterns.push(
[PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
null, '\'"`']);
} else {
// 'single-line-string', "single-line-string"
shortcutStylePatterns.push(
[PR_STRING,
/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
null, '"\'']);
}
if (options['verbatimStrings']) {
// verbatim-string-literal production from the C# grammar. See issue 93.
fallthroughStylePatterns.push(
[PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
}
var hc = options['hashComments'];
if (hc) {
if (options['cStyleComments']) {
if (hc > 1) { // multiline hash comments
shortcutStylePatterns.push(
[PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
} else {
// Stop C preprocessor declarations at an unclosed open comment
shortcutStylePatterns.push(
[PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
null, '#']);
}
// #include <stdio.h>
fallthroughStylePatterns.push(
[PR_STRING,
/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
null]);
} else {
shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
}
}
if (options['cStyleComments']) {
fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
fallthroughStylePatterns.push(
[PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
}
var regexLiterals = options['regexLiterals'];
if (regexLiterals) {
/**
* @const
*/
var regexExcls = regexLiterals > 1
? '' // Multiline regex literals
: '\n\r';
/**
* @const
*/
var regexAny = regexExcls ? '.' : '[\\S\\s]';
/**
* @const
*/
var REGEX_LITERAL = (
// A regular expression literal starts with a slash that is
// not followed by * or / so that it is not confused with
// comments.
'/(?=[^/*' + regexExcls + '])'
// and then contains any number of raw characters,
+ '(?:[^/\\x5B\\x5C' + regexExcls + ']'
// escape sequences (\x5C),
+ '|\\x5C' + regexAny
// or non-nesting character sets (\x5B\x5D);
+ '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
+ '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
// finally closed by a /.
+ '/');
fallthroughStylePatterns.push(
['lang-regex',
RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
]);
}
var types = options['types'];
if (types) {
fallthroughStylePatterns.push([PR_TYPE, types]);
}
var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
if (keywords.length) {
fallthroughStylePatterns.push(
[PR_KEYWORD,
new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
null]);
}
shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
var punctuation =
// The Bash man page says
// A word is a sequence of characters considered as a single
// unit by GRUB. Words are separated by metacharacters,
// which are the following plus space, tab, and newline: { }
// | & $ ; < >
// ...
// A word beginning with # causes that word and all remaining
// characters on that line to be ignored.
// which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
// comment but empirically
// $ echo {#}
// {#}
// $ echo \$#
// $#
// $ echo }#
// }#
// so /(?:^|[|&;<>\s])/ is more appropriate.
// http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
// suggests that this definition is compatible with a
// default mode that tries to use a single token definition
// to recognize both bash/python style comments and C
// preprocessor directives.
// This definition of punctuation does not include # in the list of
// follow-on exclusions, so # will not be broken before if preceeded
// by a punctuation character. We could try to exclude # after
// [|&;<>] but that doesn't seem to cause many major problems.
// If that does turn out to be a problem, we should change the below
// when hc is truthy to include # in the run of punctuation characters
// only when not followint [|&;<>].
'^.[^\\s\\w.$@\'"`/\\\\]*';
if (options['regexLiterals']) {
punctuation += '(?!\s*\/)';
}
fallthroughStylePatterns.push(
// TODO(mikesamuel): recognize non-latin letters and numerals in idents
[PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
[PR_TYPE, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
[PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
[PR_LITERAL,
new RegExp(
'^(?:'
// A hex number
+ '0x[a-f0-9]+'
// or an octal or decimal number,
+ '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
// possibly in scientific notation
+ '(?:e[+\\-]?\\d+)?'
+ ')'
// with an optional modifier like UL for unsigned long
+ '[a-z]*', 'i'),
null, '0123456789'],
// Don't treat escaped quotes in bash as starting strings.
// See issue 144.
[PR_PLAIN, /^\\[\s\S]?/, null],
[PR_PUNCTUATION, new RegExp(punctuation), null]);
return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
}
var decorateSource = sourceDecorator({
'keywords': ALL_KEYWORDS,
'hashComments': true,
'cStyleComments': true,
'multiLineStrings': true,
'regexLiterals': true
});
/**
* Given a DOM subtree, wraps it in a list, and puts each line into its own
* list item.
*
* @param {Node} node modified in place. Its content is pulled into an
* HTMLOListElement, and each line is moved into a separate list item.
* This requires cloning elements, so the input might not have unique
* IDs after numbering.
* @param {number|null|boolean} startLineNum
* If truthy, coerced to an integer which is the 1-indexed line number
* of the first line of code. The number of the first line will be
* attached to the list.
* @param {boolean} isPreformatted true iff white-space in text nodes should
* be treated as significant.
*/
function numberLines(node, startLineNum, isPreformatted) {
var nocode = /(?:^|\s)nocode(?:\s|$)/;
var lineBreak = /\r\n?|\n/;
var document = node.ownerDocument;
var li = document.createElement('li');
while (node.firstChild) {
li.appendChild(node.firstChild);
}
// An array of lines. We split below, so this is initialized to one
// un-split line.
var listItems = [li];
function walk(node) {
var type = node.nodeType;
if (type == 1 && !nocode.test(node.className)) { // Element
if ('br' === node.nodeName) {
breakAfter(node);
// Discard the <BR> since it is now flush against a </LI>.
if (node.parentNode) {
node.parentNode.removeChild(node);
}
} else {
for (var child = node.firstChild; child; child = child.nextSibling) {
walk(child);
}
}
} else if ((type == 3 || type == 4) && isPreformatted) { // Text
var text = node.nodeValue;
var match = text.match(lineBreak);
if (match) {
var firstLine = text.substring(0, match.index);
node.nodeValue = firstLine;
var tail = text.substring(match.index + match[0].length);
if (tail) {
var parent = node.parentNode;
parent.insertBefore(
document.createTextNode(tail), node.nextSibling);
}
breakAfter(node);
if (!firstLine) {
// Don't leave blank text nodes in the DOM.
node.parentNode.removeChild(node);
}
}
}
}
// Split a line after the given node.
function breakAfter(lineEndNode) {
// If there's nothing to the right, then we can skip ending the line
// here, and move root-wards since splitting just before an end-tag
// would require us to create a bunch of empty copies.
while (!lineEndNode.nextSibling) {
lineEndNode = lineEndNode.parentNode;
if (!lineEndNode) { return; }
}
function breakLeftOf(limit, copy) {
// Clone shallowly if this node needs to be on both sides of the break.
var rightSide = copy ? limit.cloneNode(false) : limit;
var parent = limit.parentNode;
if (parent) {
// We clone the parent chain.
// This helps us resurrect important styling elements that cross lines.
// E.g. in <i>Foo<br>Bar</i>
// should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
var parentClone = breakLeftOf(parent, 1);
// Move the clone and everything to the right of the original
// onto the cloned parent.
var next = limit.nextSibling;
parentClone.appendChild(rightSide);
for (var sibling = next; sibling; sibling = next) {
next = sibling.nextSibling;
parentClone.appendChild(sibling);
}
}
return rightSide;
}
var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
// Walk the parent chain until we reach an unattached LI.
for (var parent;
// Check nodeType since IE invents document fragments.
(parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
copiedListItem = parent;
}
// Put it on the list of lines for later processing.
listItems.push(copiedListItem);
}
// Split lines while there are lines left to split.
for (var i = 0; // Number of lines that have been split so far.
i < listItems.length; // length updated by breakAfter calls.
++i) {
walk(listItems[i]);
}
// Make sure numeric indices show correctly.
if (startLineNum === (startLineNum|0)) {
listItems[0].setAttribute('value', startLineNum);
}
var ol = document.createElement('ol');
ol.className = 'linenums';
var offset = Math.max(0, ((startLineNum - 1 /* zero index */)) | 0) || 0;
for (var i = 0, n = listItems.length; i < n; ++i) {
li = listItems[i];
// Stick a class on the LIs so that stylesheets can
// color odd/even rows, or any other row pattern that
// is co-prime with 10.
li.className = 'L' + ((i + offset) % 10);
if (!li.firstChild) {
li.appendChild(document.createTextNode('\xA0'));
}
ol.appendChild(li);
}
node.appendChild(ol);
}
/**
* Breaks {@code job.sourceCode} around style boundaries in
* {@code job.decorations} and modifies {@code job.sourceNode} in place.
* @param {JobT} job
* @private
*/
function recombineTagsAndDecorations(job) {
var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
var newlineRe = /\n/g;
var source = job.sourceCode;
var sourceLength = source.length;
// Index into source after the last code-unit recombined.
var sourceIndex = 0;
var spans = job.spans;
var nSpans = spans.length;
// Index into spans after the last span which ends at or before sourceIndex.
var spanIndex = 0;
var decorations = job.decorations;
var nDecorations = decorations.length;
// Index into decorations after the last decoration which ends at or before
// sourceIndex.
var decorationIndex = 0;
// Remove all zero-length decorations.
decorations[nDecorations] = sourceLength;
var decPos, i;
for (i = decPos = 0; i < nDecorations;) {
if (decorations[i] !== decorations[i + 2]) {
decorations[decPos++] = decorations[i++];
decorations[decPos++] = decorations[i++];
} else {
i += 2;
}
}
nDecorations = decPos;
// Simplify decorations.
for (i = decPos = 0; i < nDecorations;) {
var startPos = decorations[i];
// Conflate all adjacent decorations that use the same style.
var startDec = decorations[i + 1];
var end = i + 2;
while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
end += 2;
}
decorations[decPos++] = startPos;
decorations[decPos++] = startDec;
i = end;
}
nDecorations = decorations.length = decPos;
var sourceNode = job.sourceNode;
var oldDisplay = "";
if (sourceNode) {
oldDisplay = sourceNode.style.display;
sourceNode.style.display = 'none';
}
try {
var decoration = null;
while (spanIndex < nSpans) {
var spanStart = spans[spanIndex];
var spanEnd = /** @type{number} */ (spans[spanIndex + 2])
|| sourceLength;
var decEnd = decorations[decorationIndex + 2] || sourceLength;
var end = Math.min(spanEnd, decEnd);
var textNode = /** @type{Node} */ (spans[spanIndex + 1]);
var styledText;
if (textNode.nodeType !== 1 // Don't muck with <BR>s or <LI>s
// Don't introduce spans around empty text nodes.
&& (styledText = source.substring(sourceIndex, end))) {
// This may seem bizarre, and it is. Emitting LF on IE causes the
// code to display with spaces instead of line breaks.
// Emitting Windows standard issue linebreaks (CRLF) causes a blank
// space to appear at the beginning of every line but the first.
// Emitting an old Mac OS 9 line separator makes everything spiffy.
if (isIE8OrEarlier) {
styledText = styledText.replace(newlineRe, '\r');
}
textNode.nodeValue = styledText;
var document = textNode.ownerDocument;
var span = document.createElement('span');
span.className = decorations[decorationIndex + 1];
var parentNode = textNode.parentNode;
parentNode.replaceChild(span, textNode);
span.appendChild(textNode);
if (sourceIndex < spanEnd) { // Split off a text node.
spans[spanIndex + 1] = textNode
// TODO: Possibly optimize by using '' if there's no flicker.
= document.createTextNode(source.substring(end, spanEnd));
parentNode.insertBefore(textNode, span.nextSibling);
}
}
sourceIndex = end;
if (sourceIndex >= spanEnd) {
spanIndex += 2;
}
if (sourceIndex >= decEnd) {
decorationIndex += 2;
}
}
} finally {
if (sourceNode) {
sourceNode.style.display = oldDisplay;
}
}
}
/** Maps language-specific file extensions to handlers. */
var langHandlerRegistry = {};
/** Register a language handler for the given file extensions.
* @param {function (JobT)} handler a function from source code to a list
* of decorations. Takes a single argument job which describes the
* state of the computation and attaches the decorations to it.
* @param {Array.<string>} fileExtensions
*/
function registerLangHandler(handler, fileExtensions) {
for (var i = fileExtensions.length; --i >= 0;) {
var ext = fileExtensions[i];
if (!langHandlerRegistry.hasOwnProperty(ext)) {
langHandlerRegistry[ext] = handler;
} else if (win['console']) {
console['warn']('cannot override language handler %s', ext);
}
}
}
function langHandlerForExtension(extension, source) {
if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
// Treat it as markup if the first non whitespace character is a < and
// the last non-whitespace character is a >.
extension = /^\s*</.test(source)
? 'default-markup'
: 'default-code';
}
return langHandlerRegistry[extension];
}
registerLangHandler(decorateSource, ['default-code']);
registerLangHandler(
createSimpleLexer(
[],
[
[PR_PLAIN, /^[^<?]+/],
[PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
[PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
// Unescaped content in an unknown language
['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
['lang-', /^<%([\s\S]+?)(?:%>|$)/],
[PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
// Unescaped content in javascript. (Or possibly vbscript).
['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
// Contains unescaped stylesheet content
['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
]),
['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
registerLangHandler(
createSimpleLexer(
[
[PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
[PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
],
[
[PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
[PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
[PR_PUNCTUATION, /^[=<>\/]+/],
['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i]
]),
['in.tag']);
registerLangHandler(
createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
registerLangHandler(sourceDecorator({
'keywords': CPP_KEYWORDS,
'hashComments': true,
'cStyleComments': true,
'types': C_TYPES
}), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
registerLangHandler(sourceDecorator({
'keywords': 'null,true,false'
}), ['json']);
registerLangHandler(sourceDecorator({
'keywords': CSHARP_KEYWORDS,
'hashComments': true,
'cStyleComments': true,
'verbatimStrings': true,
'types': C_TYPES
}), ['cs']);
registerLangHandler(sourceDecorator({
'keywords': JAVA_KEYWORDS,
'cStyleComments': true
}), ['java']);
registerLangHandler(sourceDecorator({
'keywords': SH_KEYWORDS,
'hashComments': true,
'multiLineStrings': true
}), ['bash', 'bsh', 'csh', 'sh']);
registerLangHandler(sourceDecorator({
'keywords': PYTHON_KEYWORDS,
'hashComments': true,
'multiLineStrings': true,
'tripleQuotedStrings': true
}), ['cv', 'py', 'python']);
registerLangHandler(sourceDecorator({
'keywords': PERL_KEYWORDS,
'hashComments': true,
'multiLineStrings': true,
'regexLiterals': 2 // multiline regex literals
}), ['perl', 'pl', 'pm']);
registerLangHandler(sourceDecorator({
'keywords': RUBY_KEYWORDS,
'hashComments': true,
'multiLineStrings': true,
'regexLiterals': true
}), ['rb', 'ruby']);
registerLangHandler(sourceDecorator({
'keywords': JSCRIPT_KEYWORDS,
'cStyleComments': true,
'regexLiterals': true
}), ['javascript', 'js']);
registerLangHandler(sourceDecorator({
'keywords': COFFEE_KEYWORDS,
'hashComments': 3, // ### style block comments
'cStyleComments': true,
'multilineStrings': true,
'tripleQuotedStrings': true,
'regexLiterals': true
}), ['coffee']);
registerLangHandler(
createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
/** @param {JobT} job */
function applyDecorator(job) {
var opt_langExtension = job.langExtension;
try {
// Extract tags, and convert the source code to plain text.
var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
/** Plain text. @type {string} */
var source = sourceAndSpans.sourceCode;
job.sourceCode = source;
job.spans = sourceAndSpans.spans;
job.basePos = 0;
// Apply the appropriate language handler
langHandlerForExtension(opt_langExtension, source)(job);
// Integrate the decorations and tags back into the source code,
// modifying the sourceNode in place.
recombineTagsAndDecorations(job);
} catch (e) {
if (win['console']) {
console['log'](e && e['stack'] || e);
}
}
}
/**
* Pretty print a chunk of code.
* @param sourceCodeHtml {string} The HTML to pretty print.
* @param opt_langExtension {string} The language name to use.
* Typically, a filename extension like 'cpp' or 'java'.
* @param opt_numberLines {number|boolean} True to number lines,
* or the 1-indexed number of the first line in sourceCodeHtml.
*/
function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
/** @type{number|boolean} */
var nl = opt_numberLines || false;
/** @type{string|null} */
var langExtension = opt_langExtension || null;
/** @type{!Element} */
var container = document.createElement('div');
// This could cause images to load and onload listeners to fire.
// E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
// We assume that the inner HTML is from a trusted source.
// The pre-tag is required for IE8 which strips newlines from innerHTML
// when it is injected into a <pre> tag.
// http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
// http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
container = /** @type{!Element} */(container.firstChild);
if (nl) {
numberLines(container, nl, true);
}
/** @type{JobT} */
var job = {
langExtension: langExtension,
numberLines: nl,
sourceNode: container,
pre: 1,
sourceCode: null,
basePos: null,
spans: null,
decorations: null
};
applyDecorator(job);
return container.innerHTML;
}
/**
* Find all the {@code <pre>} and {@code <code>} tags in the DOM with
* {@code class=prettyprint} and prettify them.
*
* @param {Function} opt_whenDone called when prettifying is done.
* @param {HTMLElement|HTMLDocument} opt_root an element or document
* containing all the elements to pretty print.
* Defaults to {@code document.body}.
*/
function $prettyPrint(opt_whenDone, opt_root) {
var root = opt_root || document.body;
var doc = root.ownerDocument || document;
function byTagName(tn) { return root.getElementsByTagName(tn); }
// fetch a list of nodes to rewrite
var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
var elements = [];
for (var i = 0; i < codeSegments.length; ++i) {
for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
elements.push(codeSegments[i][j]);
}
}
codeSegments = null;
var clock = Date;
if (!clock['now']) {
clock = { 'now': function () { return +(new Date); } };
}
// The loop is broken into a series of continuations to make sure that we
// don't make the browser unresponsive when rewriting a large page.
var k = 0;
var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
var prettyPrintRe = /\bprettyprint\b/;
var prettyPrintedRe = /\bprettyprinted\b/;
var preformattedTagNameRe = /pre|xmp/i;
var codeRe = /^code$/i;
var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
var EMPTY = {};
function doWork() {
var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
clock['now']() + 250 /* ms */ :
Infinity);
for (; k < elements.length && clock['now']() < endTime; k++) {
var cs = elements[k];
// Look for a preceding comment like
// <?prettify lang="..." linenums="..."?>
var attrs = EMPTY;
{
for (var preceder = cs; (preceder = preceder.previousSibling);) {
var nt = preceder.nodeType;
// <?foo?> is parsed by HTML 5 to a comment node (8)
// like <!--?foo?-->, but in XML is a processing instruction
var value = (nt === 7 || nt === 8) && preceder.nodeValue;
if (value
? !/^\??prettify\b/.test(value)
: (nt !== 3 || /\S/.test(preceder.nodeValue))) {
// Skip over white-space text nodes but not others.
break;
}
if (value) {
attrs = {};
value.replace(
/\b(\w+)=([\w:.%+-]+)/g,
function (_, name, value) { attrs[name] = value; });
break;
}
}
}
var className = cs.className;
if ((attrs !== EMPTY || prettyPrintRe.test(className))
// Don't redo this if we've already done it.
// This allows recalling pretty print to just prettyprint elements
// that have been added to the page since last call.
&& !prettyPrintedRe.test(className)) {
// make sure this is not nested in an already prettified element
var nested = false;
for (var p = cs.parentNode; p; p = p.parentNode) {
var tn = p.tagName;
if (preCodeXmpRe.test(tn)
&& p.className && prettyPrintRe.test(p.className)) {
nested = true;
break;
}
}
if (!nested) {
// Mark done. If we fail to prettyprint for whatever reason,
// we shouldn't try again.
cs.className += ' prettyprinted';
// If the classes includes a language extensions, use it.
// Language extensions can be specified like
// <pre class="prettyprint lang-cpp">
// the language extension "cpp" is used to find a language handler
// as passed to PR.registerLangHandler.
// HTML5 recommends that a language be specified using "language-"
// as the prefix instead. Google Code Prettify supports both.
// http://dev.w3.org/html5/spec-author-view/the-code-element.html
var langExtension = attrs['lang'];
if (!langExtension) {
langExtension = className.match(langExtensionRe);
// Support <pre class="prettyprint"><code class="language-c">
var wrapper;
if (!langExtension && (wrapper = childContentWrapper(cs))
&& codeRe.test(wrapper.tagName)) {
langExtension = wrapper.className.match(langExtensionRe);
}
if (langExtension) { langExtension = langExtension[1]; }
}
var preformatted;
if (preformattedTagNameRe.test(cs.tagName)) {
preformatted = 1;
} else {
var currentStyle = cs['currentStyle'];
var defaultView = doc.defaultView;
var whitespace = (
currentStyle
? currentStyle['whiteSpace']
: (defaultView
&& defaultView.getComputedStyle)
? defaultView.getComputedStyle(cs, null)
.getPropertyValue('white-space')
: 0);
preformatted = whitespace
&& 'pre' === whitespace.substring(0, 3);
}
// Look for a class like linenums or linenums:<n> where <n> is the
// 1-indexed number of the first line.
var lineNums = attrs['linenums'];
if (!(lineNums = lineNums === 'true' || +lineNums)) {
lineNums = className.match(/\blinenums\b(?::(\d+))?/);
lineNums =
lineNums
? lineNums[1] && lineNums[1].length
? +lineNums[1] : true
: false;
}
if (lineNums) { numberLines(cs, lineNums, preformatted); }
// do the pretty printing
var prettyPrintingJob = {
langExtension: langExtension,
sourceNode: cs,
numberLines: lineNums,
pre: preformatted,
sourceCode: null,
basePos: null,
spans: null,
decorations: null
};
applyDecorator(prettyPrintingJob);
}
}
}
if (k < elements.length) {
// finish up in a continuation
win.setTimeout(doWork, 250);
} else if ('function' === typeof opt_whenDone) {
opt_whenDone();
}
}
doWork();
}
/**
* Contains functions for creating and registering new language handlers.
* @type {Object}
*/
var PR = win['PR'] = {
'createSimpleLexer': createSimpleLexer,
'registerLangHandler': registerLangHandler,
'sourceDecorator': sourceDecorator,
'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
'PR_COMMENT': PR_COMMENT,
'PR_DECLARATION': PR_DECLARATION,
'PR_KEYWORD': PR_KEYWORD,
'PR_LITERAL': PR_LITERAL,
'PR_NOCODE': PR_NOCODE,
'PR_PLAIN': PR_PLAIN,
'PR_PUNCTUATION': PR_PUNCTUATION,
'PR_SOURCE': PR_SOURCE,
'PR_STRING': PR_STRING,
'PR_TAG': PR_TAG,
'PR_TYPE': PR_TYPE,
'prettyPrintOne':
IN_GLOBAL_SCOPE
? (win['prettyPrintOne'] = $prettyPrintOne)
: (prettyPrintOne = $prettyPrintOne),
'prettyPrint': prettyPrint =
IN_GLOBAL_SCOPE
? (win['prettyPrint'] = $prettyPrint)
: (prettyPrint = $prettyPrint)
};
// Make PR available via the Asynchronous Module Definition (AMD) API.
// Per https://github.com/amdjs/amdjs-api/wiki/AMD:
// The Asynchronous Module Definition (AMD) API specifies a
// mechanism for defining modules such that the module and its
// dependencies can be asynchronously loaded.
// ...
// To allow a clear indicator that a global define function (as
// needed for script src browser loading) conforms to the AMD API,
// any global define function SHOULD have a property called "amd"
// whose value is an object. This helps avoid conflict with any
// other existing JavaScript code that could have defined a define()
// function that does not conform to the AMD API.
var define = win['define'];
if (typeof define === "function" && define['amd']) {
define("google-code-prettify", [], function () {
return PR;
});
}
})();
return prettyPrint;
})();
// If this script is deferred or async and the document is already
// loaded we need to wait for language handlers to load before performing
// any autorun.
function onLangsLoaded() {
if (autorun) {
contentLoaded(
function () {
var n = callbacks.length;
var callback = n ? function () {
for (var i = 0; i < n; ++i) {
(function (i) {
win.setTimeout(
function () {
win['exports'][callbacks[i]].apply(win, arguments);
}, 0);
})(i);
}
} : void 0;
prettyPrint(callback);
});
}
}
checkPendingLanguages();
}());
================================================
FILE: documentation/assets/style.css
================================================
body,
h3 {
font-size: 14px
}
*,
h3,
ol li {
padding: 0
}
.mainpanel ul li a,
h3,
ol li {
color: #a1b1c1
}
* {
margin: 0
}
body,
html {
height: 100%
}
body {
letter-spacing: .5px;
font-family: Lato, sans-serif
}
h3 {
text-decoration: underline;
font-weight: 700
}
ol {
padding-left: 20px;
padding-top: 20px
}
a {
color: #316fb5;
transition: .5s
}
a:focus,
a:hover {
text-decoration: none;
color: #2c88c0
}
.navbar {
border-radius: 0;
clear: both;
margin-bottom: 0;
overflow-y: auto;
}
.navbar-default {
background-color: #f8f8f8;
border-right: 1px solid #f2f2f2
}
.navbar-default .navbar-nav>.active>a,
.navbar-default .navbar-nav>.active>a:focus,
.navbar-default .navbar-nav>.active>a:hover {
background-color: #f2f2f2;
border-bottom: 1px solid #eaebec;
border-top: 1px solid #eaebec;
color: #a9a9a9
}
.navbar-default .navbar-nav>li>a:focus,
.navbar-default .navbar-nav>li>a:hover {
color: #a9a9a9;
background-color: transparent
}
.navbar-default .navbar-nav>li>a {
padding-left: 30px;
text-transform: uppercase;
color: #a1b1c1;
font-weight: 700
}
.main,
nav.sidebar {
-webkit-transition: margin .2s ease-out;
-moz-transition: margin .2s ease-out;
-o-transition: margin .2s ease-out;
transition: margin .2s ease-out
}
@media (max-width:767px) {
.copyright {
display: none
}
.wrapper {
padding: 20px!important
}
}
@media (min-width:767px) {
.leftpanel {
left: 0!important
}
.mainpanel {
margin-left: 250px
}
.navbar-nav {
margin-top: 100px
}
.navbar-brand img {
margin: 50px auto 0
}
nav.sidebar:hover+.main {
margin-left: 200px
}
.navbar>.container-fluid .navbar-brand,
nav.sidebar,
nav.sidebar.navbar.sidebar>.container .navbar-brand,
nav.sidebar:hover {
margin-left: 0
}
nav.sidebar .navbar-brand,
nav.sidebar .navbar-header {
text-align: center;
width: 100%;
margin-left: 0
}
nav.sidebar a {
padding-right: 13px
}
nav.sidebar .navbar-nav>li:first-child {
border-top: 1px #f5f5f5 solid
}
nav.sidebar .navbar-nav>li {
border-bottom: 1px #f5f5f5 solid
}
nav.sidebar .navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
-webkit-box-shadow: none;
box-shadow: none
}
nav.sidebar .container-fluid,
nav.sidebar .navbar-collapse {
padding: 0
}
.navbar-inverse .navbar-nav .open .dropdown-menu>li>a {
color: #777
}
nav.sidebar {
position: fixed;
width: 250px;
height: 100%;
margin-bottom: 0;
float: left
}
nav.sidebar li {
width: 100%
}
.forAnimate {
opacity: 0
}
nav.sidebar .forAnimate {
opacity: 1
}
}
h2,
h4,
h5,
p {
margin: 0
}
nav.sidebar .navbar-nav .open .dropdown-menu>li>a:focus,
nav.sidebar .navbar-nav .open .dropdown-menu>li>a:hover {
color: #CCC;
background-color: transparent
}
nav:hover .forAnimate {
opacity: 1
}
.leftpanel .copyright {
position: absolute;
bottom: 30px;
margin-bottom: 0;
width: 100%;
text-align: center;
color: #a9a9a9;
font-size: 13px
}
.leftpanel .copyright a {
color: #a9a9a9;
padding-right: 0;
letter-spacing: 1px
}
.wrapper {
padding: 50px
}
.title {
padding: 80px;
text-align: center;
background: #316fb5
}
.title h1 {
color: #fff;
font-size: 40px
}
.title small {
font-size: 12px;
color: #fff
}
h2,
h4 {
color: #a1b1c1
}
.alert {
padding: 10px;
border-radius: 1px;
font-size: .9em
}
h5,
p {
padding: 20px 0;
font-weight: 400
}
h2 {
padding-top: 40px;
font-weight: 700;
font-size: 24px;
text-transform: uppercase
}
h4 {
padding-top: 20px;
padding-bottom: 20px;
font-weight: 400;
font-size: 20px
}
.mainpanel ul li,
h5,
p {
color: #929292
}
h5 {
font-size: 15px
}
p {
font-size: 14px
}
.mainpanel ul {
padding: 20px 50px 10px
}
.mt0 {
margin-top: 0!important
}
.mt5 {
margin-top: 5px!important
}
.mt10 {
margin-top: 10px!important
}
.mt15 {
margin-top: 15px!important
}
.mt20 {
margin-top: 20px!important
}
.mt25 {
margin-top: 25px!important
}
.mt30 {
margin-top: 30px!important
}
.mt35 {
margin-top: 35px!important
}
.mt40 {
margin-top: 40px!important
}
.mt45 {
margin-top: 45px!important
}
.mt50 {
margin-top: 50px!important
}
.mt55 {
margin-top: 55px!important
}
.mt60 {
margin-top: 60px!important
}
.mt65 {
margin-top: 65px!important
}
.mt70 {
margin-top: 70px!important
}
.mt75 {
margin-top: 75px!important
}
.mt80 {
margin-top: 80px!important
}
.mt85 {
margin-top: 85px!important
}
.mt90 {
margin-top: 90px!important
}
.mt95 {
margin-top: 95px!important
}
.mt100 {
margin-top: 100px!important
}
.mb0 {
margin-bottom: 0!important
}
.mb5 {
margin-bottom: 5px!important
}
.mb10 {
margin-bottom: 10px!important
}
.mb15 {
margin-bottom: 15px!important
}
.mb20 {
margin-bottom: 20px!important
}
.mb25 {
margin-bottom: 25px!important
}
.mb30 {
margin-bottom: 30px!important
}
.mb35 {
margin-bottom: 35px!important
}
.mb40 {
margin-bottom: 40px!important
}
.mb45 {
margin-bottom: 45px!important
}
.mb50 {
margin-bottom: 50px!important
}
.mb55 {
margin-bottom: 55px!important
}
.mb60 {
margin-bottom: 60px!important
}
.mb65 {
margin-bottom: 65px!important
}
.mb70 {
margin-bottom: 70px!important
}
.mb75 {
margin-bottom: 75px!important
}
.mb80 {
margin-bottom: 80px!important
}
.mb85 {
margin-bottom: 85px!important
}
.mb90 {
margin-bottom: 90px!important
}
.mb95 {
margin-bottom: 95px!important
}
.mb100 {
margin-bottom: 100px!important
}
.directory-list ul {
margin-left: 10px;
padding-left: 20px;
padding-top: 10px;
padding-bottom: 10px;
border-left: 1px dashed #ddd
}
.directory-list li {
list-style: none;
color: #a9a9a9;
font-size: 14px;
font-style: italic;
font-weight: 400
}
.directory-list a {
border-bottom: 1px solid transparent;
color: #888;
text-decoration: none;
transition: all .2s ease
}
.directory-list a:hover {
border-color: #eee;
color: #000
}
.directory-list .folder,
.directory-list .folder>a {
color: #777;
font-weight: 700
}
.directory-list li:before {
margin-right: 10px;
content: "";
height: 20px;
vertical-align: middle;
width: 20px;
background-repeat: no-repeat;
display: inline-block;
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><path fill='lightgrey' d='M85.714,42.857V87.5c0,1.487-0.521,2.752-1.562,3.794c-1.042,1.041-2.308,1.562-3.795,1.562H19.643 c-1.488,0-2.753-0.521-3.794-1.562c-1.042-1.042-1.562-2.307-1.562-3.794v-75c0-1.487,0.521-2.752,1.562-3.794 c1.041-1.041,2.306-1.562,3.794-1.562H50V37.5c0,1.488,0.521,2.753,1.562,3.795s2.307,1.562,3.795,1.562H85.714z M85.546,35.714 H57.143V7.311c3.05,0.558,5.505,1.767,7.366,3.627l17.41,17.411C83.78,30.209,84.989,32.665,85.546,35.714z' /></svg>");
background-position: center 2px;
background-size: 60% auto
}
.directory-list li.folder:before {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><path fill='lightblue' d='M96.429,37.5v39.286c0,3.423-1.228,6.361-3.684,8.817c-2.455,2.455-5.395,3.683-8.816,3.683H16.071 c-3.423,0-6.362-1.228-8.817-3.683c-2.456-2.456-3.683-5.395-3.683-8.817V23.214c0-3.422,1.228-6.362,3.683-8.817 c2.455-2.456,5.394-3.683,8.817-3.683h17.857c3.422,0,6.362,1.228,8.817,3.683c2.455,2.455,3.683,5.395,3.683,8.817V25h37.5 c3.422,0,6.361,1.228,8.816,3.683C95.201,31.138,96.429,34.078,96.429,37.5z' /></svg>");
background-position: center top;
background-size: 75% auto
}
.alert-success {
color: #929292;
padding: 20px!important;
background: #f8f8f8;
border-color: #f2f2f2
}
.editor {
margin-top: 20px
}
.ml-20 {
margin-left: -20px
}
.editor .editor-title {
color: #a9a9a9;
position: relative;
padding-top: 4px;
text-align: center;
top: 1px;
width: 100%;
height: 30px;
border: 1px solid #f2f2f2;
border-bottom: none;
background-color: #f5f5f5;
border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
-o-border-radius: 5px 5px 0 0;
-webkit-border-radius: 5px 5px 0 0
}
.editor .controls {
float: left;
padding-top: 2px
}
.editor span.control {
width: 12px;
height: 12px;
margin-left: 10px;
border-radius: 20px;
display: inline-block;
-moz-border-radius: 20px;
-o-border-radius: 20px;
-webkit-border-radius: 20px
}
.editor span.control-1 {
background: #df6963;
margin-left: 20px
}
.editor span.control-2 {
background: #f5e18a
}
.editor span.control-3 {
background: #97c38a
}
#codes {
border-bottom: 1px solid #5F5F5F;
background-color: #34312c;
border-top-right-radius: 4px;
border-top-left-radius: 4px
}
#codes>li {
padding: 8px 0 8px 8px
}
#codes>li>a {
position: relative;
display: block;
padding: 3px 15px;
border-radius: 4px;
color: #fefdf9;
cursor: pointer!important
}
#codes>li.active>a,
#codes>li.active>a:focus,
#codes>li.active>a:hover,
#codes>li>a:active,
#codes>li>a:focus,
#codes>li>a:hover {
position: relative;
display: block;
padding: 3px 15px;
border-radius: 4px;
color: #fdb839;
cursor: default;
background-color: #655F56;
border: 1px solid #3e3a33;
border-bottom-color: transparent
}
code,
pre {
white-space: normal;
border: 0!important;
border-top-left-radius: 0;
border-top-right-radius: 0
}
xmp {
margin-left: 10px
}
pre.prettyprint {
display: block;
background-color: #1d1f21
}
pre .nocode {
background-color: none;
color: #000
}
pre .str {
color: #96b38a
}
pre .kwd {
color: #fdb839
}
pre .com {
color: #B3B3B3
}
pre .typ {
color: #fdb839
}
pre .lit {
color: #cd5c5c
}
pre .pun {
color: #fff
}
pre .pln {
color: #ccc
}
pre .tag {
color: #fdb839
}
pre .atn {
color: #bdb76b
}
pre .atv,
pre .dec {
color: #fdb839
}
ol.linenums {
margin-top: 0;
margin-bottom: 0;
color: #666;
margin-left: 20px;
padding-bottom: 20px
}
li.L0,
li.L1,
li.L2,
li.L3,
li.L4,
li.L5,
li.L6,
li.L7,
li.L8 {
list-style-type: decimal!important
}
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 {
background-color: transparent!important
}
@media print {
code .str,
pre .str {
color: #060
}
code .kwd,
pre .kwd {
color: #006
}
code .com,
pre .com {
color: #600
}
code .typ,
pre .typ {
color: #404
}
code .lit,
pre .lit {
color: #044
}
code .pun,
pre .pun {
color: #440
}
code .pln,
pre .pln {
color: #000
}
code .tag,
pre .tag {
color: #006
}
code .atn,
pre .atn {
color: #404
}
code .atv,
pre .atv {
color: #060
}
}
================================================
FILE: documentation/index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PHP Qr Code Generator - Documentation</title>
<link href="assets/bootstrap.min.css" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
<link href='http://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic' rel='stylesheet' type='text/css'>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Left Panel Start -->
<div class="leftpanel">
<nav class="navbar navbar-default sidebar" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-sidebar-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand page-scroll" href="#header" style="margin-top: -50px">
<img src="assets/DynamicQRCode_Original.png" style="width: 200px; heigth: 63px">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-sidebar-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a class="page-scroll" href="#header">Start</a></li>
<li><a class="page-scroll" href="#setup">Setup</a></li>
<li><a class="page-scroll" href="#upgrade">Upgrade</a></li>
<li><a class="page-scroll" href="#multi-account">Multi account</a></li>
<li><a class="page-scroll" href="#frontend">Frontend Files Structure</a></li>
<li><a class="page-scroll" href="#script">Script structure</a></li>
<li><a class="page-scroll" href="#dynamic-qrcode">Dynamic Qr code class</a></li>
<li><a class="page-scroll" href="#static-qrcode">Static Qr code class</a></li>
<li><a class="page-scroll" href="#dashboard">Dashboard</a></li>
<li><a class="page-scroll" href="#read">Read a Qr code</a></li>
</ul>
</div>
</div>
</nav>
</div>
<!-- Left Panel End -->
<!-- Main Panel Start -->
<div class="mainpanel">
<div class="title" id="header">
<h1>PHP Dynamic Qr code - v2.3.0</h1>
<small> Documentation - v2.3.0 / Last Update: 13/01/2025</small>
<!--<h2 style="color: black">Technical documentation deprecated as the core of the project has been modified in version 2.0</h2>-->
</div>
<div class="wrapper">
<h2> About PHP Dynamic Qr code</h2>
<p><b>PHP Dynamic Qr code </b> is a script that allows the generation and saving of dynamic and static QR codes. It has clean, responsive and user-friendly design. It is Based on <a href="https://adminlte.io/" target="_blank">AdminLte </a> the <i>"Best open source admin dashboard & control panel theme. Built on top of Bootstrap" </i> and <a href="https://github.com/chetans9/core-php-admin-panel" target="_blank">Core PHP Admin Panel,</a> a simple Admin Pannel written in core PHP that contains an implementation of general features you might need in your website admin panel like: record management (CRUD), secure authentication, pagination, filters.<br><br>
N.B. A <strong>careful reading</strong> of this documentation is recommended to fully understand how the script works.
</p>
<h2> What is a dynamic qr code</h2>
<p><strong>A Dynamic QR code has a modifiable destination URL.</strong><br> A Short URL is placed into the QR code which then transparently re-directs the user to the intended destination. The destination of a dynamic QR code can be changed at any time and as often as you want – even if your marketing material has already been printed. This will save reprinting costs, effort and enable you to respond to any changes in the campaign as quickly as possible.</p>
<h2> What is a static qr code</h2>
<p><strong>A Static QR code has a fixed destination URL.</strong><br> The information encoded in <b>static QR codes are fixed</b>. The destination/data is stored directly in the QR Code graphic (hence QR codes are also getting larger and form a more complex pattern if there is more data to store). Therefore, the stored destination/data cannot be changed. Any typo in an already printed QR code cannot be changed, as with any other printed material. <strong>Through this script you can create 13 different types of static qr code.</strong></p>
<div id="setup">
<h2> Setup</h2>
<p><u>Local setup:</u></p>
<ol><strong>
<li>No more available from v2.3.0</li>
</ol>
<p><u>Docker:</u></p>
<ol>
<li>Download docker-compose.yml file from github and edit if you want (recommended)</li>
<li>docker compose build --no-cache && docker compose up -d</li>
<li>Open your browser at http://localhost:80 and login with (username: superadmin, password: superadmin) </li>
<li>Finish</li>
</ol>
<p><u>Docker image building:</u></p>
<ol>
<li>Clone the project from github</li>
<li>Clone the database project from github: https://github.com/giandonatoinverso/PHP-Dynamic-Qr-code-db</li>
<li>Build and run both docker image: docker buildx build -f Dockerfile</li>
<li>Open your browser at http://localhost:80 and login with (username: superadmin, password: superadmin) </li>
<li>Finish</li>
</ol>
</div>
<div id="upgrade">
<h2> Upgrade</h2>
<p>To upgrade the program from version 1.0 to version 2.x and maintain backward compatibility with the QR codes you have already created, files and users, you can follow these steps:</p>
<ol><strong>
<li>Clone the project from github</li>
<li>Edit config/environment.php with your database credential</li>
<li>Launch upgrade/upgrade.php file in your browser </li>
<p>The script makes the necessary changes in the database that adapt to the new source code.</p>
<li>Finish</li>
</ol>
</div>
<div id="multi-account">
<h2> Multi account</h2>
<p>Starting from version 2.x, the functionality that supports the creation and management of QR codes with the support of multiple accounts has been added</p>
<ol><strong>
<li>Superadmin accounts can manage all users, all qrcodes created</li>
<li>Admin accounts can only manage QR codes created by them and "universal" ones, i.e. not associated with any specific account</li>
</ol>
</div>
<div id="frontend">
<h2> Frontend Files Structure</h2><br>
<strong>a) CSS Files
<ul>
<li>
dist/css/adminlte.min.css Contains general css codes for admin panel
</li>
<li>
dist/css/alt folder Contains additional styles files
</li>
<li>
plugins/fontawesome-free/css/all.min.css Contains css of fontawesome
</li>
<li>
plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css Contains css of color picker input data
</li>
<li>
plugins/daterangepicker/daterangepicker.css Contains css of daterange input data
</li>
<li>
plugins/overlayScrollbars/css/OverlayScrollbars.css Contains css of the scrollbar relating to template customization (top right)
</li>
</ul><br>
<strong>b) JS Files
<ul>
<li>
dist/js/adminlte.js Contains general js codes for admin panel
</li>
<li>
dist/js/custom.js Contains custom js code for front-end
</li>
<li>
build/ folder Contains general dashboard script codes
</li>
</ul><br>
<strong>c) Plugins used in application
<ul>
<li>
<strong><a href="https://getbootstrap.com/" target="_blank">Bootstrap</a></strong> The world’s most popular front-end open source toolkit
</li>
<li>
<strong><a href="https://itsjavi.com/bootstrap-colorpicker/" target="_blank">Bootstrap colorpicker</a></strong> Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4
</li>
<li>
<strong><a href="https://www.chartjs.org/" target="_blank">Chart JS</a></strong> Simple yet flexible JavaScript charting for designers & developers
</li>
<li>
<strong><a href="https://www.daterangepicker.com/" target="_blank">Date Range Picker</a></strong> A JavaScript component for choosing date ranges, dates and times
</li>
<li>
<strong><a href="https://fontawesome.com/" target="_blank">Fontawesome</a></strong> The world's most popular and easiest to use icon set just got an upgrade
</li>
<li>
<strong><a href="https://jquery.com/" target="_blank">jQuery</a></strong> jQuery is a JavaScript library that greatly reduces the amount of code that you must write
</li>
<li>
<strong><a href="https://jqueryui.com/" target="_blank">jQueryUI</a></strong> jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library
</li>
<li>
<strong><a href="https://jqueryvalidation.org/" target="_blank">jQuery Validation</a></strong> This jQuery plugin makes simple clientside form validation easy
</li>
<li>
<strong><a href="https://momentjs.com/" target="_blank">Moment JS</a></strong> Moment will still create a moment global, which is useful to plugins and other
</li>
<li>
<strong><a href="https://kingsora.github.io/OverlayScrollbars" target="_blank">Overlay Scrollbars</a></strong> A JavaScript scrollbar plugin which hides native scrollbars and provides
custom styleable overlay scrollbars
</li>
</ul><br>
<strong>d) Open source libraries used
<ul>
<li>
<strong><a href="https://github.com/ThingEngineer/PHP-MySQLi-Database-Class" target="_blank">MysqliDb</a></strong> Simple MySQLi wrapper and object mapper with prepared statements
</li>
<li>
<strong><a href="https://github.com/pH-7/QRCode-Generator-PHP-Class" target="_blank">vCard Qr code</a></strong> This class allows to easily generate a simple QR code using vCard 4.0
</li>
<li>
<strong><a href="https://gist.github.com/jakebellacera/635416" target="_blank">PHP to ICS</a></strong> A convenient script to generate iCalendar (.ics) files on the fly in PHP
</li>
</ul><br>
</div>
<br>
<div id="script">
<h2> Script Structure</h2>
<ol>
<li>General</li>
<p>
All pages include the <b>config.php</b> file which in turn includes the <b>helpers.php</b> file and the <b>MysqliDb class</b> and the <b>auth_validation.php</b> file which takes care of verifying on each page that the user is logged in (read authentication types).
</p>
<p>As for the HTML structure, all pages start by including the <b>head.php</b> page which contains the entire head tag, the <b>navbar.php</b> page, the <b>sidebar.php</b> page.
There is a header with the page title and then the different main content for each page. Finally, each page includes the <b>footer.php</b> file with the required js scripts; some pages have <b>additional js scripts</b> needed
As specified at the beginning, the frontend part of this script is done with <b>AdminLTE</b> (Bootstrap). We therefore recommend reading the official documentation to fully understand the HTML structure.
</p>
<li>Qr code and Admin users</li>
<p>
<b>The dashboard page has a separate structure</b>, while the dynamic qr codes, static qr codes and users sections have a <b>very similar structure</b> to each other:
</p>
<ol>
<li><strong>dynamic_qrcodes.php</strong>, <strong>static_qrcodes.php</strong>, <strong>users.php</strong> allow you to view the relevant data</li>
<li><strong>dynamic_qrcode.php</strong>, <strong>static_qrcode.php</strong>, <strong>user.php</strong> allow you to add, modify and delete the relevant data</li>
</ol>
</ol>
</div>
<p><strong>This script is designed as OOP as possible. Therefore, all QR code handling operations are performed using classes and methods. There are 3 classes for 3 the three sections (dynamic qrcodes, static qrcodes, users) and dynamic qrcodes, static qrcodes share a single Qrcode class which contains some methods used by both classes</strong></p>
<div id="dynamic-qrcode">
<h2> Dynamic Qr code</h2><br>
<p>The physical creation of a dynamic qr code is managed by a free external provider https://api.qrserver.com/</p>
</div>
<div id="static-qrcode">
<h2> Static Qr code</h2><br>
<p>The physical creation of a static qr code is managed by a free external provider https://api.qrserver.com/ and previously is managed differently depending on the type</p>
</div>
<div id="dashboard">
<h2>Dashboard</h2>
<p>The dashboard is the main page of the script. In this section there is a counter of the total number of qr code in the database, and in particular also the number of dynamic and static ones. There is also a counter regarding the number of <strong>scans of the dynamic qr code</strong>.<br>
The script offers 2 examples of dynamic charts created with chart.js
The first shows a weekly report of the number of qr codes created (dynamic and static), the second graph offers an overview of the number of scans of dynamic qr codes.
</div>
<div id="read">
<h2>What happens when i scan a dynamic qr code?</h2>
<p>When a dynamic QR code is scanned, the read.php page opens by default which increases the scan counter and takes care of carrying out the appropriate redirect.
You can change the name of this page by remembering to change the constant defined in config.php
You can also customize the redirect page and increase the timer
</p>
</div>
</div>
</div>
<!-- Main Panel End -->
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="assets/jquery.easing.min.js"></script>
<script src="assets/bootstrap.min.js"></script>
<script src="assets/run_prettify.js"></script>
<script src="assets/custom.js"></script>
</body>
</html>
================================================
FILE: src/authenticate.php
================================================
<?php
require_once 'config/config.php';
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
$username = filter_input(INPUT_POST, 'username');
$password = filter_input(INPUT_POST, 'password');
$remember = filter_input(INPUT_POST, 'remember');
// Get DB instance.
$db = getDbInstance();
$db->where('username', $username);
$row = $db->getOne('users');
if ($db->count >= 1)
{
$db_password = $row['password'];
$user_id = $row['id'];
if (password_verify($password, $db_password))
{
$_SESSION['user_logged_in'] = TRUE;
$_SESSION['type'] = $row['type'];
$_SESSION['user_id'] = $row['id'];
if ($remember)
{
$series_id = randomString(16);
$remember_token = getSecureRandomToken(20);
$encryted_remember_token = password_hash($remember_token,PASSWORD_DEFAULT);
$expiry_time = date('Y-m-d H:i:s', strtotime(' + 30 days'));
$expires = strtotime($expiry_time);
setcookie('series_id', $series_id, $expires, '/');
setcookie('remember_token', $remember_token, $expires, '/');
$db = getDbInstance();
$db->where ('id',$user_id);
$update_remember = array(
'series_id'=> $series_id,
'remember_token' => $encryted_remember_token,
'expires' =>$expiry_time
);
$db->update('users', $update_remember);
}
// Authentication successfull redirect user
header('Location: index.php');
}
else
{
$_SESSION['login_failure'] = 'Invalid username or password';
header('Location: login.php');
}
exit;
}
else
{
$_SESSION['login_failure'] = 'Invalid username or password';
header('Location: login.php');
exit;
}
}
else
{
die('Method Not allowed');
}
================================================
FILE: src/bulk_action.php
================================================
<?php
session_start();
require_once 'config/config.php';
require_once BASE_PATH . '/lib/DynamicQrcode/DynamicQrcode.php';
require_once BASE_PATH . '/lib/StaticQrcode/StaticQrcode.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$db = getDbInstance();
$json = json_decode(file_get_contents('php://input'), true);
if($json["action"] == "download") {
$params = $json['params'];
$files = [];
if (isset($json['type'])) {
$type = filter_var($json['type'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
} else {
echo json_encode([
'data' => 'Type action field in the request.',
'status' => 400
]);
exit();
}
if (count($params) == 0) {
echo json_encode([
'data' => 'No qrcodes were selected.',
'status' => 400
]);
exit();
}
foreach ($params as $param) {
$row = $db->where('id', $param);
$row = $db->getOne("{$type}_qrcodes");
@$files[] = SAVED_QRCODE_FOLDER . $row['qrcode'];
}
$zip = new ZipArchive();
$uniqid = uniqid();
$relative_dir = SAVED_QRCODE_FOLDER . 'zip/qrcodes_' . $uniqid . '.zip';
@unlink($relative_dir);
$url_path = SAVED_QRCODE_URL . 'zip/qrcodes_' . $uniqid . '.zip';
$zip->open($relative_dir, ZipArchive::CREATE);
foreach ($files as $file) {
$download_file = @file_get_contents($file, true);
$zip->addFromString(basename($file), $download_file);
}
$zip->close();
echo json_encode([
'data' => $url_path,
'status' => 200
]);
exit();
} else if($json["action"] == "delete") {
$params = $json['params'];
$files = [];
if (isset($json['type'])) {
$type = filter_var($json['type'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
} else {
echo json_encode([
'data' => 'Type action field in the request.',
'status' => 400
]);
exit();
}
if (count($params) == 0) {
echo json_encode([
'data' => 'No qrcodes were selected.',
'status' => 400
]);
exit();
}
if($type == "dynamic")
$instance = new DynamicQrcode();
else if($type == "static")
$instance = new StaticQrcode();
else
die("Type not allowed");
foreach ($params as $param) {
$a = 0;
$instance->deleteQrcode($param, true);
}
echo json_encode([
'action' => "delete",
'data' => "Qrcode deleted",
'status' => 200
]);
exit();
} else
exit("Action not allowed");
} else {
exit('Direct access to this script not allowed.');
}
?>
================================================
FILE: src/config/config.php
================================================
<?php
//Note: This file should be included first in every php page.
require_once ('environment.php');
error_reporting(E_ALL);
ini_set('display_errors', 'On');
define('BASE_PATH', dirname(dirname(__FILE__)));
define('CURRENT_PAGE', basename($_SERVER['REQUEST_URI']));
define('SCRIPT_NAME', ltrim(dirname($_SERVER['SCRIPT_NAME']), '/'));
if(SCRIPT_NAME === "")
define('SCRIPT_FOLDER', "");
else
define('SCRIPT_FOLDER', "/" . SCRIPT_NAME);
require_once BASE_PATH . '/lib/MysqliDb/MysqliDb.php';
require_once BASE_PATH . '/helpers/helpers.php';
/* SAVED QR CODES */
//You can change the folder where the qr code will be saved
define('SAVED_QRCODE_FOLDER', './saved_qrcode/');
define('SAVED_QRCODE_DIRECTORY', BASE_PATH.'/saved_qrcode/');
define('SAVED_QRCODE_URL', base_url(). SCRIPT_FOLDER .'/saved_qrcode/');
//You can change the page name for the redirect and the search parameter (the default is "id")
define('READ_PATH', base_url().'/read.php?id=');
/**
* Get instance of DB object
*/
function getDbInstance() {
return new MysqliDb (Array (
'host' => DATABASE_HOST,
'username' => DATABASE_USER,
'password' => DATABASE_PASSWORD,
'db'=> DATABASE_NAME,
'port' => DATABASE_PORT,
'prefix' => DATABASE_PREFIX,
'charset' => DATABASE_CHARSET));
}
================================================
FILE: src/config/environment.php
================================================
<?php
/*
|--------------------------------------------------------------------------
| UNIFIED ENVIRONMENT CONFIGURATION
|--------------------------------------------------------------------------
*/
define('DATABASE_HOST', getenv('DATABASE_HOST') ?: 'localhost');
define('DATABASE_PORT', filter_var(getenv('DATABASE_PORT'), FILTER_VALIDATE_INT) ?: 3306);
define('DATABASE_NAME', getenv('DATABASE_NAME') ?: 'qrcode');
define('DATABASE_USER', getenv('DATABASE_USER') ?: 'root');
define('DATABASE_PASSWORD', getenv('DATABASE_PASSWORD') ?: 'root');
define('DATABASE_PREFIX', getenv('DATABASE_PREFIX') !== false ? getenv('DATABASE_PREFIX') : 'qr_');
define('DATABASE_CHARSET', getenv('DATABASE_CHARSET') ?: 'utf8');
define('TYPE', getenv('TYPE') ?: 'local');
define('BASE_URL', getenv('BASE_URL') ?: 'http://localhost');
define('QRCODE_GENERATOR', getenv('QRCODE_GENERATOR') ?: 'external-api.qrserver.com'); // opties: external-api.qrserver.com of internal-chillerlan.qrcode
================================================
FILE: src/dist/css/adminlte.css
================================================
/*!
* AdminLTE v3.0.5
* Author: Colorlib
* Website: AdminLTE.io <http://adminlte.io>
* License: Open source - MIT <http://opensource.org/licenses/MIT>
*/
/*!
* Bootstrap v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #ffffff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #ffffff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: none;
}
a:not([href]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.5rem;
font-family: inherit;
font-weight: 500;
line-height: 1.2;
color: inherit;
}
h1, .h1 {
font-size: 2.5rem;
}
h2, .h2 {
font-size: 2rem;
}
h3, .h3 {
font-size: 1.75rem;
}
h4, .h4 {
font-size: 1.5rem;
}
h5, .h5 {
font-size: 1.25rem;
}
h6, .h6 {
font-size: 1rem;
}
.lead {
font-size: 1.25rem;
font-weight: 300;
}
.display-1 {
font-size: 6rem;
font-weight: 300;
line-height: 1.2;
}
.display-2 {
font-size: 5.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-3 {
font-size: 4.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-4 {
font-size: 3.5rem;
font-weight: 300;
line-height: 1.2;
}
hr {
margin-top: 1rem;
margin-bottom: 1rem;
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
small,
.small {
font-size: 80%;
font-weight: 400;
}
mark,
.mark {
padding: 0.2em;
background-color: #fcf8e3;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
list-style: none;
}
.list-inline-item {
display: inline-block;
}
.list-inline-item:not(:last-child) {
margin-right: 0.5rem;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
.blockquote {
margin-bottom: 1rem;
font-size: 1.25rem;
}
.blockquote-footer {
display: block;
font-size: 80%;
color: #6c757d;
}
.blockquote-footer::before {
content: "\2014\00A0";
}
.img-fluid {
max-width: 100%;
height: auto;
}
.img-thumbnail {
padding: 0.25rem;
background-color: #ffffff;
border: 1px solid #dee2e6;
border-radius: 0.25rem;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);
max-width: 100%;
height: auto;
}
.figure {
display: inline-block;
}
.figure-img {
margin-bottom: 0.5rem;
line-height: 1;
}
.figure-caption {
font-size: 90%;
color: #6c757d;
}
code {
font-size: 87.5%;
color: #e83e8c;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 87.5%;
color: #ffffff;
background-color: #212529;
border-radius: 0.2rem;
box-shadow: inset 0 -0.1rem 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: 700;
box-shadow: none;
}
pre {
display: block;
font-size: 87.5%;
color: #212529;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
width: 100%;
padding-right: 7.5px;
padding-left: 7.5px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
width: 100%;
padding-right: 7.5px;
padding-left: 7.5px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container, .container-sm {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container, .container-sm, .container-md {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container, .container-sm, .container-md, .container-lg {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container, .container-sm, .container-md, .container-lg, .container-xl {
max-width: 1140px;
}
}
.row {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -7.5px;
margin-left: -7.5px;
}
.no-gutters {
margin-right: 0;
margin-left: 0;
}
.no-gutters > .col,
.no-gutters > [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
.col-xl-auto {
position: relative;
width: 100%;
padding-right: 7.5px;
padding-left: 7.5px;
}
.col {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.row-cols-1 > * {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-2 > * {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-3 > * {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.row-cols-4 > * {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-5 > * {
-ms-flex: 0 0 20%;
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-6 > * {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-first {
-ms-flex-order: -1;
order: -1;
}
.order-last {
-ms-flex-order: 13;
order: 13;
}
.order-0 {
-ms-flex-order: 0;
order: 0;
}
.order-1 {
-ms-flex-order: 1;
order: 1;
}
.order-2 {
-ms-flex-order: 2;
order: 2;
}
.order-3 {
-ms-flex-order: 3;
order: 3;
}
.order-4 {
-ms-flex-order: 4;
order: 4;
}
.order-5 {
-ms-flex-order: 5;
order: 5;
}
.order-6 {
-ms-flex-order: 6;
order: 6;
}
.order-7 {
-ms-flex-order: 7;
order: 7;
}
.order-8 {
-ms-flex-order: 8;
order: 8;
}
.order-9 {
-ms-flex-order: 9;
order: 9;
}
.order-10 {
-ms-flex-order: 10;
order: 10;
}
.order-11 {
-ms-flex-order: 11;
order: 11;
}
.order-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-1 {
margin-left: 8.333333%;
}
.offset-2 {
margin-left: 16.666667%;
}
.offset-3 {
margin-left: 25%;
}
.offset-4 {
margin-left: 33.333333%;
}
.offset-5 {
margin-left: 41.666667%;
}
.offset-6 {
margin-left: 50%;
}
.offset-7 {
margin-left: 58.333333%;
}
.offset-8 {
margin-left: 66.666667%;
}
.offset-9 {
margin-left: 75%;
}
.offset-10 {
margin-left: 83.333333%;
}
.offset-11 {
margin-left: 91.666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.row-cols-sm-1 > * {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-sm-2 > * {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-sm-3 > * {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.row-cols-sm-4 > * {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-sm-5 > * {
-ms-flex: 0 0 20%;
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-sm-6 > * {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-sm-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-sm-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-sm-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-sm-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-sm-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-sm-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-sm-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-sm-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-sm-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-sm-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-sm-first {
-ms-flex-order: -1;
order: -1;
}
.order-sm-last {
-ms-flex-order: 13;
order: 13;
}
.order-sm-0 {
-ms-flex-order: 0;
order: 0;
}
.order-sm-1 {
-ms-flex-order: 1;
order: 1;
}
.order-sm-2 {
-ms-flex-order: 2;
order: 2;
}
.order-sm-3 {
-ms-flex-order: 3;
order: 3;
}
.order-sm-4 {
-ms-flex-order: 4;
order: 4;
}
.order-sm-5 {
-ms-flex-order: 5;
order: 5;
}
.order-sm-6 {
-ms-flex-order: 6;
order: 6;
}
.order-sm-7 {
-ms-flex-order: 7;
order: 7;
}
.order-sm-8 {
-ms-flex-order: 8;
order: 8;
}
.order-sm-9 {
-ms-flex-order: 9;
order: 9;
}
.order-sm-10 {
-ms-flex-order: 10;
order: 10;
}
.order-sm-11 {
-ms-flex-order: 11;
order: 11;
}
.order-sm-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-sm-0 {
margin-left: 0;
}
.offset-sm-1 {
margin-left: 8.333333%;
}
.offset-sm-2 {
margin-left: 16.666667%;
}
.offset-sm-3 {
margin-left: 25%;
}
.offset-sm-4 {
margin-left: 33.333333%;
}
.offset-sm-5 {
margin-left: 41.666667%;
}
.offset-sm-6 {
margin-left: 50%;
}
.offset-sm-7 {
margin-left: 58.333333%;
}
.offset-sm-8 {
margin-left: 66.666667%;
}
.offset-sm-9 {
margin-left: 75%;
}
.offset-sm-10 {
margin-left: 83.333333%;
}
.offset-sm-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 768px) {
.col-md {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.row-cols-md-1 > * {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-md-2 > * {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-md-3 > * {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.row-cols-md-4 > * {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-md-5 > * {
-ms-flex: 0 0 20%;
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-md-6 > * {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-md-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-md-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-md-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-md-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-md-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-md-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-md-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-md-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-md-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-md-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-md-first {
-ms-flex-order: -1;
order: -1;
}
.order-md-last {
-ms-flex-order: 13;
order: 13;
}
.order-md-0 {
-ms-flex-order: 0;
order: 0;
}
.order-md-1 {
-ms-flex-order: 1;
order: 1;
}
.order-md-2 {
-ms-flex-order: 2;
order: 2;
}
.order-md-3 {
-ms-flex-order: 3;
order: 3;
}
.order-md-4 {
-ms-flex-order: 4;
order: 4;
}
.order-md-5 {
-ms-flex-order: 5;
order: 5;
}
.order-md-6 {
-ms-flex-order: 6;
order: 6;
}
.order-md-7 {
-ms-flex-order: 7;
order: 7;
}
.order-md-8 {
-ms-flex-order: 8;
order: 8;
}
.order-md-9 {
-ms-flex-order: 9;
order: 9;
}
.order-md-10 {
-ms-flex-order: 10;
order: 10;
}
.order-md-11 {
-ms-flex-order: 11;
order: 11;
}
.order-md-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-md-0 {
margin-left: 0;
}
.offset-md-1 {
margin-left: 8.333333%;
}
.offset-md-2 {
margin-left: 16.666667%;
}
.offset-md-3 {
margin-left: 25%;
}
.offset-md-4 {
margin-left: 33.333333%;
}
.offset-md-5 {
margin-left: 41.666667%;
}
.offset-md-6 {
margin-left: 50%;
}
.offset-md-7 {
margin-left: 58.333333%;
}
.offset-md-8 {
margin-left: 66.666667%;
}
.offset-md-9 {
margin-left: 75%;
}
.offset-md-10 {
margin-left: 83.333333%;
}
.offset-md-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 992px) {
.col-lg {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.row-cols-lg-1 > * {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-lg-2 > * {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-lg-3 > * {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.row-cols-lg-4 > * {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-lg-5 > * {
-ms-flex: 0 0 20%;
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-lg-6 > * {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-lg-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-lg-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-lg-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-lg-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-lg-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-lg-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-lg-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-lg-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-lg-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-lg-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-lg-first {
-ms-flex-order: -1;
order: -1;
}
.order-lg-last {
-ms-flex-order: 13;
order: 13;
}
.order-lg-0 {
-ms-flex-order: 0;
order: 0;
}
.order-lg-1 {
-ms-flex-order: 1;
order: 1;
}
.order-lg-2 {
-ms-flex-order: 2;
order: 2;
}
.order-lg-3 {
-ms-flex-order: 3;
order: 3;
}
.order-lg-4 {
-ms-flex-order: 4;
order: 4;
}
.order-lg-5 {
-ms-flex-order: 5;
order: 5;
}
.order-lg-6 {
-ms-flex-order: 6;
order: 6;
}
.order-lg-7 {
-ms-flex-order: 7;
order: 7;
}
.order-lg-8 {
-ms-flex-order: 8;
order: 8;
}
.order-lg-9 {
-ms-flex-order: 9;
order: 9;
}
.order-lg-10 {
-ms-flex-order: 10;
order: 10;
}
.order-lg-11 {
-ms-flex-order: 11;
order: 11;
}
.order-lg-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-lg-0 {
margin-left: 0;
}
.offset-lg-1 {
margin-left: 8.333333%;
}
.offset-lg-2 {
margin-left: 16.666667%;
}
.offset-lg-3 {
margin-left: 25%;
}
.offset-lg-4 {
margin-left: 33.333333%;
}
.offset-lg-5 {
margin-left: 41.666667%;
}
.offset-lg-6 {
margin-left: 50%;
}
.offset-lg-7 {
margin-left: 58.333333%;
}
.offset-lg-8 {
margin-left: 66.666667%;
}
.offset-lg-9 {
margin-left: 75%;
}
.offset-lg-10 {
margin-left: 83.333333%;
}
.offset-lg-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.row-cols-xl-1 > * {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-xl-2 > * {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-xl-3 > * {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.row-cols-xl-4 > * {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-xl-5 > * {
-ms-flex: 0 0 20%;
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-xl-6 > * {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-xl-auto {
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-xl-1 {
-ms-flex: 0 0 8.333333%;
flex: 0 0 8.333333%;
max-width: 8.333333%;
}
.col-xl-2 {
-ms-flex: 0 0 16.666667%;
flex: 0 0 16.666667%;
max-width: 16.666667%;
}
.col-xl-3 {
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
-ms-flex: 0 0 33.333333%;
flex: 0 0 33.333333%;
max-width: 33.333333%;
}
.col-xl-5 {
-ms-flex: 0 0 41.666667%;
flex: 0 0 41.666667%;
max-width: 41.666667%;
}
.col-xl-6 {
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
-ms-flex: 0 0 58.333333%;
flex: 0 0 58.333333%;
max-width: 58.333333%;
}
.col-xl-8 {
-ms-flex: 0 0 66.666667%;
flex: 0 0 66.666667%;
max-width: 66.666667%;
}
.col-xl-9 {
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
-ms-flex: 0 0 83.333333%;
flex: 0 0 83.333333%;
max-width: 83.333333%;
}
.col-xl-11 {
-ms-flex: 0 0 91.666667%;
flex: 0 0 91.666667%;
max-width: 91.666667%;
}
.col-xl-12 {
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-xl-first {
-ms-flex-order: -1;
order: -1;
}
.order-xl-last {
-ms-flex-order: 13;
order: 13;
}
.order-xl-0 {
-ms-flex-order: 0;
order: 0;
}
.order-xl-1 {
-ms-flex-order: 1;
order: 1;
}
.order-xl-2 {
-ms-flex-order: 2;
order: 2;
}
.order-xl-3 {
-ms-flex-order: 3;
order: 3;
}
.order-xl-4 {
-ms-flex-order: 4;
order: 4;
}
.order-xl-5 {
-ms-flex-order: 5;
order: 5;
}
.order-xl-6 {
-ms-flex-order: 6;
order: 6;
}
.order-xl-7 {
-ms-flex-order: 7;
order: 7;
}
.order-xl-8 {
-ms-flex-order: 8;
order: 8;
}
.order-xl-9 {
-ms-flex-order: 9;
order: 9;
}
.order-xl-10 {
-ms-flex-order: 10;
order: 10;
}
.order-xl-11 {
-ms-flex-order: 11;
order: 11;
}
.order-xl-12 {
-ms-flex-order: 12;
order: 12;
}
.offset-xl-0 {
margin-left: 0;
}
.offset-xl-1 {
margin-left: 8.333333%;
}
.offset-xl-2 {
margin-left: 16.666667%;
}
.offset-xl-3 {
margin-left: 25%;
}
.offset-xl-4 {
margin-left: 33.333333%;
}
.offset-xl-5 {
margin-left: 41.666667%;
}
.offset-xl-6 {
margin-left: 50%;
}
.offset-xl-7 {
margin-left: 58.333333%;
}
.offset-xl-8 {
margin-left: 66.666667%;
}
.offset-xl-9 {
margin-left: 75%;
}
.offset-xl-10 {
margin-left: 83.333333%;
}
.offset-xl-11 {
margin-left: 91.666667%;
}
}
.table {
width: 100%;
margin-bottom: 1rem;
color: #212529;
background-color: transparent;
}
.table th,
.table td {
padding: 0.75rem;
vertical-align: top;
border-top: 1px solid #dee2e6;
}
.table thead th {
vertical-align: bottom;
border-bottom: 2px solid #dee2e6;
}
.table tbody + tbody {
border-top: 2px solid #dee2e6;
}
.table-sm th,
.table-sm td {
padding: 0.3rem;
}
.table-bordered {
border: 1px solid #dee2e6;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #dee2e6;
}
.table-bordered thead th,
.table-bordered thead td {
border-bottom-width: 2px;
}
.table-borderless th,
.table-borderless td,
.table-borderless thead th,
.table-borderless tbody + tbody {
border: 0;
}
.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(0, 0, 0, 0.05);
}
.table-hover tbody tr:hover {
color: #212529;
background-color: rgba(0, 0, 0, 0.075);
}
.table-primary,
.table-primary > th,
.table-primary > td {
background-color: #b8daff;
}
.table-primary th,
.table-primary td,
.table-primary thead th,
.table-primary tbody + tbody {
border-color: #7abaff;
}
.table-hover .table-primary:hover {
background-color: #9fcdff;
}
.table-hover .table-primary:hover > td,
.table-hover .table-primary:hover > th {
background-color: #9fcdff;
}
.table-secondary,
.table-secondary > th,
.table-secondary > td {
background-color: #d6d8db;
}
.table-secondary th,
.table-secondary td,
.table-secondary thead th,
.table-secondary tbody + tbody {
border-color: #b3b7bb;
}
.table-hover .table-secondary:hover {
background-color: #c8cbcf;
}
.table-hover .table-secondary:hover > td,
.table-hover .table-secondary:hover > th {
background-color: #c8cbcf;
}
.table-success,
.table-success > th,
.table-success > td {
background-color: #c3e6cb;
}
.table-success th,
.table-success td,
.table-success thead th,
.table-success tbody + tbody {
border-color: #8fd19e;
}
.table-hover .table-success:hover {
background-color: #b1dfbb;
}
.table-hover .table-success:hover > td,
.table-hover .table-success:hover > th {
background-color: #b1dfbb;
}
.table-info,
.table-info > th,
.table-info > td {
background-color: #bee5eb;
}
.table-info th,
.table-info td,
.table-info thead th,
.table-info tbody + tbody {
border-color: #86cfda;
}
.table-hover .table-info:hover {
background-color: #abdde5;
}
.table-hover .table-info:hover > td,
.table-hover .table-info:hover > th {
background-color: #abdde5;
}
.table-warning,
.table-warning > th,
.table-warning > td {
background-color: #ffeeba;
}
.table-warning th,
.table-warning td,
.table-warning thead th,
.table-warning tbody + tbody {
border-color: #ffdf7e;
}
.table-hover .table-warning:hover {
background-color: #ffe8a1;
}
.table-hover .table-warning:hover > td,
.table-hover .table-warning:hover > th {
background-color: #ffe8a1;
}
.table-danger,
.table-danger > th,
.table-danger > td {
background-color: #f5c6cb;
}
.table-danger th,
.table-danger td,
.table-danger thead th,
.table-danger tbody + tbody {
border-color: #ed969e;
}
.table-hover .table-danger:hover {
background-color: #f1b0b7;
}
.table-hover .table-danger:hover > td,
.table-hover .table-danger:hover > th {
background-color: #f1b0b7;
}
.table-light,
.table-light > th,
.table-light > td {
background-color: #fdfdfe;
}
.table-light th,
.table-light td,
.table-light thead th,
.table-light tbody + tbody {
border-color: #fbfcfc;
}
.table-hover .table-light:hover {
background-color: #ececf6;
}
.table-hover .table-light:hover > td,
.table-hover .table-light:hover > th {
background-color: #ececf6;
}
.table-dark,
.table-dark > th,
.table-dark > td {
background-color: #c6c8ca;
}
.table-dark th,
.table-dark td,
.table-dark thead th,
.table-dark tbody + tbody {
border-color: #95999c;
}
.table-hover .table-dark:hover {
background-color: #b9bbbe;
}
.table-hover .table-dark:hover > td,
.table-hover .table-dark:hover > th {
background-color: #b9bbbe;
}
.table-active,
.table-active > th,
.table-active > td {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover > td,
.table-hover .table-active:hover > th {
background-color: rgba(0, 0, 0, 0.075);
}
.table .thead-dark th {
color: #ffffff;
background-color: #212529;
border-color: #383f45;
}
.table .thead-light th {
color: #495057;
background-color: #e9ecef;
border-color: #dee2e6;
}
.table-dark {
color: #ffffff;
background-color: #212529;
}
.table-dark th,
.table-dark td,
.table-dark thead th {
border-color: #383f45;
}
.table-dark.table-bordered {
border: 0;
}
.table-dark.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(255, 255, 255, 0.05);
}
.table-dark.table-hover tbody tr:hover {
color: #ffffff;
background-color: rgba(255, 255, 255, 0.075);
}
@media (max-width: 575.98px) {
.table-responsive-sm {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-sm > .table-bordered {
border: 0;
}
}
@media (max-width: 767.98px) {
.table-responsive-md {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-md > .table-bordered {
border: 0;
}
}
@media (max-width: 991.98px) {
.table-responsive-lg {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-lg > .table-bordered {
border: 0;
}
}
@media (max-width: 1199.98px) {
.table-responsive-xl {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-xl > .table-bordered {
border: 0;
}
}
.table-responsive {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive > .table-bordered {
border: 0;
}
.form-control {
display: block;
width: 100%;
height: calc(2.25rem + 2px);
padding: 0.375rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
background-color: #ffffff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
box-shadow: inset 0 0 0 rgba(0, 0, 0, 0);
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
}
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #495057;
}
.form-control:focus {
color: #495057;
background-color: #ffffff;
border-color: #80bdff;
outline: 0;
box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), none;
}
.form-control::-webkit-input-placeholder {
color: #939ba2;
opacity: 1;
}
.form-control::-moz-placeholder {
color: #939ba2;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #939ba2;
opacity: 1;
}
.form-control::-ms-input-placeholder {
color: #939ba2;
opacity: 1;
}
.form-control::placeholder {
color: #939ba2;
opacity: 1;
}
.form-control:disabled, .form-control[readonly] {
background-color: #e9ecef;
opacity: 1;
}
select.form-control:focus::-ms-value {
color: #495057;
background-color: #ffffff;
}
.form-control-file,
.form-control-range {
display: block;
width: 100%;
}
.col-form-label {
padding-top: calc(0.375rem + 1px);
padding-bottom: calc(0.375rem + 1px);
margin-bottom: 0;
font-size: inherit;
line-height: 1.5;
}
.col-form-label-lg {
padding-top: calc(0.5rem + 1px);
padding-bottom: calc(0.5rem + 1px);
font-size: 1.25rem;
line-height: 1.5;
}
.col-form-label-sm {
padding-top: calc(0.25rem + 1px);
padding-bottom: calc(0.25rem + 1px);
font-size: 0.875rem;
line-height: 1.5;
}
.form-control-plaintext {
display: block;
width: 100%;
padding: 0.375rem 0;
margin-bottom: 0;
font-size: 1rem;
line-height: 1.5;
color: #212529;
background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
padding-right: 0;
padding-left: 0;
}
.form-control-sm {
height: calc(1.8125rem + 2px);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.form-control-lg {
height: calc(2.875rem + 2px);
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
select.form-control[size], select.form-control[multiple] {
height: auto;
}
textarea.form-control {
height: auto;
}
.form-group {
margin-bottom: 1rem;
}
.form-text {
display: block;
margin-top: 0.25rem;
}
.form-row {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -5px;
margin-left: -5px;
}
.form-row > .col,
.form-row > [class*="col-"] {
padding-right: 5px;
padding-left: 5px;
}
.form-check {
position: relative;
display: block;
padding-left: 1.25rem;
}
.form-check-input {
position: absolute;
margin-top: 0.3rem;
margin-left: -1.25rem;
}
.form-check-input[disabled] ~ .form-check-label,
.form-check-input:disabled ~ .form-check-label {
color: #6c757d;
}
.form-check-label {
margin-bottom: 0;
}
.form-check-inline {
display: -ms-inline-flexbox;
display: inline-flex;
-ms-flex-align: center;
align-items: center;
padding-left: 0;
margin-right: 0.75rem;
}
.form-check-inline .form-check-input {
position: static;
margin-top: 0;
margin-right: 0.3125rem;
margin-left: 0;
}
.valid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #28a745;
}
.valid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: 0.25rem 0.5rem;
margin-top: .1rem;
font-size: 0.875rem;
line-height: 1.5;
color: #ffffff;
background-color: rgba(40, 167, 69, 0.9);
border-radius: 0.25rem;
}
.was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip,
.is-valid ~ .valid-feedback,
.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .form-control:valid, .form-control.is-valid {
border-color: #28a745;
padding-right: 2.25rem;
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right calc(0.375em + 0.1875rem) center;
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
border-color: #28a745;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
padding-right: 2.25rem;
background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}
.was-validated .custom-select:valid, .custom-select.is-valid {
border-color: #28a745;
padding-right: calc(0.75em + 2.3125rem);
background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #ffffff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
border-color: #28a745;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
color: #28a745;
}
.was-validated .form-check-input:valid ~ .valid-feedback,
.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
.form-check-input.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
color: #28a745;
}
.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
border-color: #28a745;
}
.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
border-color: #34ce57;
background-color: #34ce57;
}
.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {
border-color: #28a745;
}
.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
border-color: #28a745;
}
.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
border-color: #28a745;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.invalid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #dc3545;
}
.invalid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: 0.25rem 0.5rem;
margin-top: .1rem;
font-size: 0.875rem;
line-height: 1.5;
color: #ffffff;
background-color: rgba(220, 53, 69, 0.9);
border-radius: 0.25rem;
}
.was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip,
.is-invalid ~ .invalid-feedback,
.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .form-control:invalid, .form-control.is-invalid {
border-color: #dc3545;
padding-right: 2.25rem;
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right calc(0.375em + 0.1875rem) center;
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
border-color: #dc3545;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
padding-right: 2.25rem;
background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
}
.was-validated .custom-select:invalid, .custom-select.is-invalid {
border-color: #dc3545;
padding-right: calc(0.75em + 2.3125rem);
background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #ffffff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
border-color: #dc3545;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
color: #dc3545;
}
.was-validated .form-check-input:invalid ~ .invalid-feedback,
.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
.form-check-input.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
color: #dc3545;
}
.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
border-color: #dc3545;
}
.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
border-color: #e4606d;
background-color: #e4606d;
}
.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {
border-color: #dc3545;
}
.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
border-color: #dc3545;
}
.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
border-color: #dc3545;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.form-inline {
display: -ms-flexbox;
display: flex;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-ms-flex-align: center;
align-items: center;
}
.form-inline .form-check {
width: 100%;
}
@media (min-width: 576px) {
.form-inline label {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
margin-bottom: 0;
}
.form-inline .form-group {
display: -ms-flexbox;
display: flex;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-ms-flex-align: center;
align-items: center;
margin-bottom: 0;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-plaintext {
display: inline-block;
}
.form-inline .input-group,
.form-inline .custom-select {
width: auto;
}
.form-inline .form-check {
display: -ms-flexbox;
display: flex;
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
width: auto;
padding-left: 0;
}
.form-inline .form-check-input {
position: relative;
-ms-flex-negative: 0;
flex-shrink: 0;
margin-top: 0;
margin-right: 0.25rem;
margin-left: 0;
}
.form-inline .custom-control {
-ms-flex-align: center;
align-items: center;
-ms-flex-pack: center;
justify-content: center;
}
.form-inline .custom-control-label {
margin-bottom: 0;
}
}
.btn {
display: inline-block;
font-weight: 400;
color: #212529;
text-align: center;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: transparent;
border: 1px solid transparent;
padding: 0.375rem 0.75rem;
font-size: 1rem;
line-height: 1.5;
border-radius: 0.25rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
}
}
.btn:hover {
color: #212529;
text-decoration: none;
}
.btn:focus, .btn.focus {
outline: 0;
box-shadow: none;
}
.btn.disabled, .btn:disabled {
opacity: 0.65;
box-shadow: none;
}
.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {
box-shadow: none;
}
a.btn.disabled,
fieldset:disabled a.btn {
pointer-events: none;
}
.btn-primary {
color: #ffffff;
background-color: #007bff;
border-color: #007bff;
box-shadow: none;
}
.btn-primary:hover {
color: #ffffff;
background-color: #0069d9;
border-color: #0062cc;
}
.btn-primary:focus, .btn-primary.focus {
color: #ffffff;
background-color: #0069d9;
border-color: #0062cc;
box-shadow: none, 0 0 0 0 rgba(38, 143, 255, 0.5);
}
.btn-primary.disabled, .btn-primary:disabled {
color: #ffffff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle {
color: #ffffff;
background-color: #0062cc;
border-color: #005cbf;
}
.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(38, 143, 255, 0.5);
}
.btn-secondary {
color: #ffffff;
background-color: #6c757d;
border-color: #6c757d;
box-shadow: none;
}
.btn-secondary:hover {
color: #ffffff;
background-color: #5a6268;
border-color: #545b62;
}
.btn-secondary:focus, .btn-secondary.focus {
color: #ffffff;
background-color: #5a6268;
border-color: #545b62;
box-shadow: none, 0 0 0 0 rgba(130, 138, 145, 0.5);
}
.btn-secondary.disabled, .btn-secondary:disabled {
color: #ffffff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
.show > .btn-secondary.dropdown-toggle {
color: #ffffff;
background-color: #545b62;
border-color: #4e555b;
}
.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
.show > .btn-secondary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(130, 138, 145, 0.5);
}
.btn-success {
color: #ffffff;
background-color: #28a745;
border-color: #28a745;
box-shadow: none;
}
.btn-success:hover {
color: #ffffff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success:focus, .btn-success.focus {
color: #ffffff;
background-color: #218838;
border-color: #1e7e34;
box-shadow: none, 0 0 0 0 rgba(72, 180, 97, 0.5);
}
.btn-success.disabled, .btn-success:disabled {
color: #ffffff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
.show > .btn-success.dropdown-toggle {
color: #ffffff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
.show > .btn-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5);
}
.btn-info {
color: #ffffff;
background-color: #17a2b8;
border-color: #17a2b8;
box-shadow: none;
}
.btn-info:hover {
color: #ffffff;
background-color: #138496;
border-color: #117a8b;
}
.btn-info:focus, .btn-info.focus {
color: #ffffff;
background-color: #138496;
border-color: #117a8b;
box-shadow: none, 0 0 0 0 rgba(58, 176, 195, 0.5);
}
.btn-info.disabled, .btn-info:disabled {
color: #ffffff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
.show > .btn-info.dropdown-toggle {
color: #ffffff;
background-color: #117a8b;
border-color: #10707f;
}
.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
.show > .btn-info.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(58, 176, 195, 0.5);
}
.btn-warning {
color: #1F2D3D;
background-color: #ffc107;
border-color: #ffc107;
box-shadow: none;
}
.btn-warning:hover {
color: #1F2D3D;
background-color: #e0a800;
border-color: #d39e00;
}
.btn-warning:focus, .btn-warning.focus {
color: #1F2D3D;
background-color: #e0a800;
border-color: #d39e00;
box-shadow: none, 0 0 0 0 rgba(221, 171, 15, 0.5);
}
.btn-warning.disabled, .btn-warning:disabled {
color: #1F2D3D;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
.show > .btn-warning.dropdown-toggle {
color: #1F2D3D;
background-color: #d39e00;
border-color: #c69500;
}
.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
.show > .btn-warning.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(221, 171, 15, 0.5);
}
.btn-danger {
color: #ffffff;
background-color: #dc3545;
border-color: #dc3545;
box-shadow: none;
}
.btn-danger:hover {
color: #ffffff;
background-color: #c82333;
border-color: #bd2130;
}
.btn-danger:focus, .btn-danger.focus {
color: #ffffff;
background-color: #c82333;
border-color: #bd2130;
box-shadow: none, 0 0 0 0 rgba(225, 83, 97, 0.5);
}
.btn-danger.disabled, .btn-danger:disabled {
color: #ffffff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
.show > .btn-danger.dropdown-toggle {
color: #ffffff;
background-color: #bd2130;
border-color: #b21f2d;
}
.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
.show > .btn-danger.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(225, 83, 97, 0.5);
}
.btn-light {
color: #1F2D3D;
background-color: #f8f9fa;
border-color: #f8f9fa;
box-shadow: none;
}
.btn-light:hover {
color: #1F2D3D;
background-color: #e2e6ea;
border-color: #dae0e5;
}
.btn-light:focus, .btn-light.focus {
color: #1F2D3D;
background-color: #e2e6ea;
border-color: #dae0e5;
box-shadow: none, 0 0 0 0 rgba(215, 218, 222, 0.5);
}
.btn-light.disabled, .btn-light:disabled {
color: #1F2D3D;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
.show > .btn-light.dropdown-toggle {
color: #1F2D3D;
background-color: #dae0e5;
border-color: #d3d9df;
}
.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
.show > .btn-light.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(215, 218, 222, 0.5);
}
.btn-dark {
color: #ffffff;
background-color: #343a40;
border-color: #343a40;
box-shadow: none;
}
.btn-dark:hover {
color: #ffffff;
background-color: #23272b;
border-color: #1d2124;
}
.btn-dark:focus, .btn-dark.focus {
color: #ffffff;
background-color: #23272b;
border-color: #1d2124;
box-shadow: none, 0 0 0 0 rgba(82, 88, 93, 0.5);
}
.btn-dark.disabled, .btn-dark:disabled {
color: #ffffff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
.show > .btn-dark.dropdown-toggle {
color: #ffffff;
background-color: #1d2124;
border-color: #171a1d;
}
.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
.show > .btn-dark.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(82, 88, 93, 0.5);
}
.btn-outline-primary {
color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:hover {
color: #ffffff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:focus, .btn-outline-primary.focus {
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);
}
.btn-outline-primary.disabled, .btn-outline-primary:disabled {
color: #007bff;
background-color: transparent;
}
.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
.show > .btn-outline-primary.dropdown-toggle {
color: #ffffff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);
}
.btn-outline-secondary {
color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:hover {
color: #ffffff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:focus, .btn-outline-secondary.focus {
box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);
}
.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
color: #6c757d;
background-color: transparent;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
.show > .btn-outline-secondary.dropdown-toggle {
color: #ffffff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-secondary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);
}
.btn-outline-success {
color: #28a745;
border-color: #28a745;
}
.btn-outline-success:hover {
color: #ffffff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:focus, .btn-outline-success.focus {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.btn-outline-success.disabled, .btn-outline-success:disabled {
color: #28a745;
background-color: transparent;
}
.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
.show > .btn-outline-success.dropdown-toggle {
color: #ffffff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.btn-outline-info {
color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:hover {
color: #ffffff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:focus, .btn-outline-info.focus {
box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);
}
.btn-outline-info.disabled, .btn-outline-info:disabled {
color: #17a2b8;
background-color: transparent;
}
.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
.show > .btn-outline-info.dropdown-toggle {
color: #ffffff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-info.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);
}
.btn-outline-warning {
color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:hover {
color: #1F2D3D;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:focus, .btn-outline-warning.focus {
box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);
}
.btn-outline-warning.disabled, .btn-outline-warning:disabled {
color: #ffc107;
background-color: transparent;
}
.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
.show > .btn-outline-warning.dropdown-toggle {
color: #1F2D3D;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-warning.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);
}
.btn-outline-danger {
color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:hover {
color: #ffffff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:focus, .btn-outline-danger.focus {
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);
}
.btn-outline-danger.disabled, .btn-outline-danger:disabled {
color: #dc3545;
background-color: transparent;
}
.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
.show > .btn-outline-danger.dropdown-toggle {
color: #ffffff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-danger.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);
}
.btn-outline-light {
color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:hover {
color: #1F2D3D;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:focus, .btn-outline-light.focus {
box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);
}
.btn-outline-light.disabled, .btn-outline-light:disabled {
color: #f8f9fa;
background-color: transparent;
}
.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
.show > .btn-outline-light.dropdown-toggle {
color: #1F2D3D;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-light.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);
}
.btn-outline-dark {
color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:hover {
color: #ffffff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:focus, .btn-outline-dark.focus {
box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);
}
.btn-outline-dark.disabled, .btn-outline-dark:disabled {
color: #343a40;
background-color: transparent;
}
.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
.show > .btn-outline-dark.dropdown-toggle {
color: #ffffff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-dark.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);
}
.btn-link {
font-weight: 400;
color: #007bff;
text-decoration: none;
}
.btn-link:hover {
color: #0056b3;
text-decoration: none;
}
.btn-link:focus, .btn-link.focus {
text-decoration: none;
box-shadow: none;
}
.btn-link:disabled, .btn-link.disabled {
color: #6c757d;
pointer-events: none;
}
.btn-lg, .btn-group-lg > .btn {
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.btn-sm, .btn-group-sm > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 0.5rem;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
transition: opacity 0.15s linear;
}
@media (prefers-reduced-motion: reduce) {
.fade {
transition: none;
}
}
.fade:not(.show) {
opacity: 0;
}
.collapse:not(.show) {
display: none;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
transition: height 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
.collapsing {
transition: none;
}
}
.dropup,
.dropright,
.dropdown,
.dropleft {
position: relative;
}
.dropdown-toggle {
white-space: nowrap;
}
.dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid;
border-right: 0.3em solid transparent;
border-bottom: 0;
border-left: 0.3em solid transparent;
}
.dropdown-toggle:empty::after {
margin-left: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 10rem;
padding: 0.5rem 0;
margin: 0.125rem 0 0;
font-size: 1rem;
color: #212529;
text-align: left;
list-style: none;
background-color: #ffffff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 0.25rem;
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.175);
}
.dropdown-menu-left {
right: auto;
left: 0;
}
.dropdown-menu-right {
right: 0;
left: auto;
}
@media (min-width: 576px) {
.dropdown-menu-sm-left {
right: auto;
left: 0;
}
.dropdown-menu-sm-right {
right: 0;
left: auto;
}
}
@media (min-width: 768px) {
.dropdown-menu-md-left {
right: auto
gitextract_zy8zlmoi/
├── .dockerignore
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── docker-compose.yml
├── documentation/
│ ├── assets/
│ │ ├── custom.js
│ │ ├── run_prettify.css
│ │ ├── run_prettify.js
│ │ └── style.css
│ └── index.html
└── src/
├── authenticate.php
├── bulk_action.php
├── config/
│ ├── config.php
│ └── environment.php
├── dist/
│ ├── css/
│ │ ├── adminlte.css
│ │ ├── alt/
│ │ │ ├── adminlte.components.css
│ │ │ ├── adminlte.core.css
│ │ │ ├── adminlte.extra-components.css
│ │ │ ├── adminlte.pages.css
│ │ │ └── adminlte.plugins.css
│ │ └── custom.css
│ └── js/
│ ├── adminlte.js
│ └── custom.js
├── dynamic_qrcode.php
├── dynamic_qrcodes.php
├── forms/
│ ├── filters.php
│ ├── form_dynamic_add.php
│ ├── form_dynamic_edit.php
│ ├── form_static_add.php
│ ├── form_static_edit.php
│ ├── form_users.php
│ ├── logo.php
│ ├── qrcode_options.php
│ ├── static/
│ │ ├── 2fa.php
│ │ ├── bitcoin.php
│ │ ├── bookmark.php
│ │ ├── country-code.html
│ │ ├── email.php
│ │ ├── event.php
│ │ ├── location.php
│ │ ├── paypal.php
│ │ ├── phone.php
│ │ ├── skype.php
│ │ ├── sms.php
│ │ ├── text.php
│ │ ├── timezones.html
│ │ ├── vcard.php
│ │ ├── whatsapp.php
│ │ └── wifi.php
│ ├── table_dynamic.php
│ ├── table_static.php
│ └── table_users.php
├── helpers/
│ └── helpers.php
├── includes/
│ ├── auth_validate.php
│ ├── flash_messages.php
│ ├── footer.php
│ ├── head.php
│ ├── navbar.php
│ ├── search_order.php
│ └── sidebar.php
├── index.php
├── lib/
│ ├── DynamicQrcode/
│ │ └── DynamicQrcode.php
│ ├── ICS/
│ │ └── ICS.php
│ ├── MysqliDb/
│ │ └── MysqliDb.php
│ ├── Qrcode/
│ │ ├── Qrcode-intchil.php
│ │ └── Qrcode.php
│ ├── StaticQrcode/
│ │ └── StaticQrcode.php
│ ├── Users/
│ │ └── Users.php
│ └── vCard/
│ └── vCard.php
├── login.php
├── logout.php
├── plugins/
│ ├── bootstrap/
│ │ └── js/
│ │ ├── bootstrap.bundle.js
│ │ └── bootstrap.js
│ ├── bootstrap-colorpicker/
│ │ ├── css/
│ │ │ └── bootstrap-colorpicker.css
│ │ └── js/
│ │ └── bootstrap-colorpicker.js
│ ├── chart.js/
│ │ ├── Chart.bundle.js
│ │ ├── Chart.css
│ │ └── Chart.js
│ ├── daterangepicker/
│ │ ├── bower.json
│ │ ├── daterangepicker.css
│ │ ├── daterangepicker.js
│ │ ├── example/
│ │ │ ├── amd/
│ │ │ │ ├── index.html
│ │ │ │ ├── main.js
│ │ │ │ └── require.js
│ │ │ └── browserify/
│ │ │ ├── README.md
│ │ │ ├── bundle.js
│ │ │ ├── index.html
│ │ │ └── main.js
│ │ ├── package.js
│ │ ├── website/
│ │ │ ├── index.html
│ │ │ ├── website.css
│ │ │ └── website.js
│ │ ├── website.css
│ │ └── website.js
│ ├── fontawesome-free/
│ │ └── css/
│ │ ├── all.css
│ │ ├── brands.css
│ │ ├── fontawesome.css
│ │ ├── regular.css
│ │ ├── solid.css
│ │ ├── svg-with-js.css
│ │ └── v4-shims.css
│ ├── jquery/
│ │ ├── core.js
│ │ ├── jquery.js
│ │ └── jquery.slim.js
│ ├── jquery-ui/
│ │ ├── AUTHORS.txt
│ │ ├── LICENSE.txt
│ │ ├── external/
│ │ │ └── jquery/
│ │ │ └── jquery.js
│ │ ├── jquery-ui.css
│ │ ├── jquery-ui.js
│ │ ├── jquery-ui.structure.css
│ │ └── jquery-ui.theme.css
│ ├── jquery-validation/
│ │ ├── additional-methods.js
│ │ └── jquery.validate.js
│ ├── moment/
│ │ ├── locales.js
│ │ └── moment-with-locales.js
│ └── overlayScrollbars/
│ ├── css/
│ │ └── OverlayScrollbars.css
│ └── js/
│ ├── OverlayScrollbars.js
│ └── jquery.overlayScrollbars.js
├── read.php
├── saved_qrcode/
│ └── zip/
│ └── .gitkeep
├── static_qrcode.php
├── static_qrcodes.php
├── upgrade/
│ └── upgrade.php
├── user.php
└── users.php
SYMBOL INDEX (1661 symbols across 34 files)
FILE: documentation/assets/run_prettify.js
function contentLoaded (line 129) | function contentLoaded(callback) {
function loadStylesheetsFallingBack (line 169) | function loadStylesheetsFallingBack(stylesheets) {
function checkPendingLanguages (line 265) | function checkPendingLanguages() {
function combinePrefixPatterns (line 551) | function combinePrefixPatterns(regexs) {
function extractSourceSpans (line 829) | function extractSourceSpans(node, isPreformatted) {
function appendDecorations (line 885) | function appendDecorations(
function childContentWrapper (line 916) | function childContentWrapper(element) {
function createSimpleLexer (line 975) | function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatter...
function sourceDecorator (line 1119) | function sourceDecorator(options) {
function numberLines (line 1309) | function numberLines(node, startLineNum, isPreformatted) {
function recombineTagsAndDecorations (line 1438) | function recombineTagsAndDecorations(job) {
function registerLangHandler (line 1557) | function registerLangHandler(handler, fileExtensions) {
function langHandlerForExtension (line 1567) | function langHandlerForExtension(extension, source) {
function applyDecorator (line 1678) | function applyDecorator(job) {
function $prettyPrintOne (line 1711) | function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLi...
function $prettyPrint (line 1755) | function $prettyPrint(opt_whenDone, opt_root) {
function onLangsLoaded (line 1974) | function onLangsLoaded() {
FILE: src/config/config.php
function getDbInstance (line 32) | function getDbInstance() {
FILE: src/dist/js/adminlte.js
function ControlSidebar (line 66) | function ControlSidebar(element, config) {
function Layout (line 337) | function Layout(element, config) {
function PushMenu (line 565) | function PushMenu(element, options) {
function Treeview (line 793) | function Treeview(element, config) {
function DirectChat (line 956) | function DirectChat(element, config) {
function TodoList (line 1046) | function TodoList(element, config) {
function CardWidget (line 1181) | function CardWidget(element, settings) {
function CardRefresh (line 1417) | function CardRefresh(element, settings) {
function Dropdown (line 1568) | function Dropdown(element, config) {
function Toasts (line 1734) | function Toasts(element, config) {
FILE: src/dist/js/custom.js
function createSkinBlock (line 380) | function createSkinBlock(colors, callback) {
FILE: src/helpers/helpers.php
function randomString (line 8) | function randomString($n) {
function getSecureRandomToken (line 32) | function getSecureRandomToken() {
function clearAuthCookie (line 40) | function clearAuthCookie() {
function clean_input (line 50) | function clean_input($data) {
function paginationLinks (line 57) | function paginationLinks($current_page, $total_pages, $base_url) {
function base_url (line 120) | function base_url() {
FILE: src/lib/DynamicQrcode/DynamicQrcode.php
class DynamicQrcode (line 13) | class DynamicQrcode {
method __construct (line 18) | public function __construct() {
method __destruct (line 25) | public function __destruct() {
method setOrderingValues (line 32) | public function setOrderingValues()
method getQrcode (line 48) | public function getQrcode($id) {
method addQrcode (line 58) | public function addQrcode($input_data) {
method editQrcode (line 81) | public function editQrcode($input_data) {
method deleteQrcode (line 99) | public function deleteQrcode($id, $async = false) {
method failure (line 123) | private function failure($message) {
method success (line 132) | private function success($message) {
method info (line 141) | private function info($message) {
method debug (line 147) | public function debug($data) {
FILE: src/lib/ICS/ICS.php
class ICS (line 69) | class ICS {
method __construct (line 82) | public function __construct($props) {
method set (line 86) | public function set($key, $val = false) {
method to_string (line 98) | public function to_string() {
method build_props (line 103) | private function build_props() {
method sanitize_val (line 135) | private function sanitize_val($val, $key = false) {
method format_timestamp (line 149) | private function format_timestamp($timestamp) {
method escape_string (line 154) | private function escape_string($str) {
FILE: src/lib/MysqliDb/MysqliDb.php
class MysqliDb (line 16) | class MysqliDb
method __construct (line 264) | public function __construct($host = null, $username = null, $password ...
method connect (line 305) | public function connect($connectionName = 'default')
method disconnectAll (line 338) | public function disconnectAll()
method connection (line 353) | public function connection($name)
method disconnect (line 371) | public function disconnect($connection = 'default')
method addConnection (line 388) | public function addConnection($name, array $params)
method mysqli (line 412) | public function mysqli()
method getInstance (line 429) | public static function getInstance()
method reset (line 443) | protected function reset()
method jsonBuilder (line 478) | public function jsonBuilder()
method arrayBuilder (line 490) | public function arrayBuilder()
method objectBuilder (line 501) | public function objectBuilder()
method setPrefix (line 514) | public function setPrefix($prefix = '')
method queryUnprepared (line 532) | private function queryUnprepared($query)
method rawQuery (line 559) | public function rawQuery($query, $bindParams = null)
method rawQueryOne (line 596) | public function rawQueryOne($query, $bindParams = null)
method rawQueryValue (line 617) | public function rawQueryValue($query, $bindParams = null)
method query (line 646) | public function query($query, $numRows = null)
method setQueryOption (line 669) | public function setQueryOption($options)
method withTotalCount (line 705) | public function withTotalCount()
method get (line 722) | public function get($tableName, $numRows = null, $columns = '*')
method getOne (line 762) | public function getOne($tableName, $columns = '*')
method getValue (line 787) | public function getValue($tableName, $column, $limit = 1)
method insert (line 818) | public function insert($tableName, $insertData)
method insertMulti (line 833) | public function insertMulti($tableName, array $multiInsertData, array ...
method replace (line 875) | public function replace($tableName, $insertData)
method has (line 889) | public function has($tableName)
method update (line 905) | public function update($tableName, $tableData, $numRows = null)
method delete (line 933) | public function delete($tableName, $numRows = null)
method where (line 969) | public function where($whereProp, $whereValue = 'DBNULL', $operator = ...
method onDuplicate (line 994) | public function onDuplicate($updateColumns, $lastInsertId = null)
method orWhere (line 1012) | public function orWhere($whereProp, $whereValue = 'DBNULL', $operator ...
method having (line 1031) | public function having($havingProp, $havingValue = 'DBNULL', $operator...
method orHaving (line 1058) | public function orHaving($havingProp, $havingValue = null, $operator =...
method join (line 1075) | public function join($joinTable, $joinCondition, $joinType = '')
method loadData (line 1107) | public function loadData($importTable, $importFile, $importSettings = ...
method loadXml (line 1174) | public function loadXml($importTable, $importFile, $importSettings = n...
method orderBy (line 1229) | public function orderBy($orderByField, $orderbyDirection = "DESC", $cu...
method groupBy (line 1269) | public function groupBy($groupByField)
method setLockMethod (line 1288) | public function setLockMethod($method)
method lock (line 1315) | public function lock($table)
method unlock (line 1370) | public function unlock()
method getInsertId (line 1404) | public function getInsertId()
method escape (line 1417) | public function escape($str)
method ping (line 1431) | public function ping()
method _determineType (line 1446) | protected function _determineType($item)
method _bindParam (line 1475) | protected function _bindParam($value)
method _bindParams (line 1486) | protected function _bindParams($values)
method _buildPair (line 1503) | protected function _buildPair($operator, $value)
method _buildInsert (line 1526) | private function _buildInsert($tableName, $insertData, $operation)
method _buildQuery (line 1568) | protected function _buildQuery($numRows = null, $tableData = null)
method _dynamicBindResults (line 1613) | protected function _dynamicBindResults(mysqli_stmt $stmt)
method _buildJoinOld (line 1720) | protected function _buildJoinOld()
method _buildDataPairs (line 1750) | public function _buildDataPairs($tableData, $tableColumns, $isInsert)
method _buildOnDuplicate (line 1810) | protected function _buildOnDuplicate($tableData)
method _buildInsertQuery (line 1838) | protected function _buildInsertQuery($tableData)
method _buildCondition (line 1867) | protected function _buildCondition($operator, &$conditions)
method _buildGroupBy (line 1920) | protected function _buildGroupBy()
method _buildOrderBy (line 1940) | protected function _buildOrderBy()
method _buildLimit (line 1966) | protected function _buildLimit($numRows)
method _prepareQuery (line 1986) | protected function _prepareQuery()
method refValues (line 2016) | protected function refValues(array &$arr)
method replacePlaceHolders (line 2039) | protected function replacePlaceHolders($str, $vals)
method getLastQuery (line 2068) | public function getLastQuery()
method getLastError (line 2079) | public function getLastError()
method getLastErrno (line 2092) | public function getLastErrno () {
method getSubQuery (line 2102) | public function getSubQuery()
method interval (line 2131) | public function interval($diff, $func = "NOW()")
method now (line 2172) | public function now($diff = null, $func = "NOW()")
method inc (line 2185) | public function inc($num = 1)
method dec (line 2201) | public function dec($num = 1)
method not (line 2216) | public function not($col = null)
method func (line 2229) | public function func($expr, $bindParams = null)
method subQuery (line 2241) | public static function subQuery($subQueryAlias = "")
method copy (line 2251) | public function copy()
method startTransaction (line 2265) | public function startTransaction()
method commit (line 2279) | public function commit()
method rollback (line 2294) | public function rollback()
method _transaction_status_check (line 2309) | public function _transaction_status_check()
method setTrace (line 2325) | public function setTrace($enabled, $stripPrefix = null)
method _traceGetCaller (line 2337) | private function _traceGetCaller()
method tableExists (line 2357) | public function tableExists($tables)
method map (line 2383) | public function map($idField)
method paginate (line 2401) | public function paginate ($table, $page, $fields = null) {
method joinWhere (line 2422) | public function joinWhere($whereJoin, $whereProp, $whereValue = 'DBNUL...
method joinOrWhere (line 2440) | public function joinOrWhere($whereJoin, $whereProp, $whereValue = 'DBN...
method _buildJoin (line 2448) | protected function _buildJoin () {
method conditionToSql (line 2481) | private function conditionToSql($operator, $val) {
FILE: src/lib/Qrcode/Qrcode-intchil.php
class Qrcode (line 19) | class Qrcode {
method __construct (line 26) | public function __construct($type) {
method __destruct (line 42) | public function __destruct()
method getQrcode (line 46) | public function getQrcode($id) {
method setOptions (line 63) | private function setOptions($input_data) {
method addQrcode (line 94) | public function addQrcode($input_data, $data_to_db, $data_to_qrcode) {
method editQrcode (line 319) | public function editQrcode($input_data, $data_to_db) {
method deleteQrcode (line 352) | public function deleteQrcode($id, $async = false) {
method addLogo (line 381) | private function addLogo($src, $logo = 'none') {
method failure (line 418) | private function failure($message) {
method success (line 427) | private function success($message) {
method info (line 436) | private function info($message) {
method debug (line 442) | public function debug($data) {
FILE: src/lib/Qrcode/Qrcode.php
class Qrcode (line 4) | class Qrcode {
method __construct (line 11) | public function __construct($type) {
method __destruct (line 27) | public function __destruct()
method getQrcode (line 31) | public function getQrcode($id) {
method setOptions (line 48) | private function setOptions($input_data) {
method addQrcode (line 79) | public function addQrcode($input_data, $data_to_db, $data_to_qrcode) {
method editQrcode (line 125) | public function editQrcode($input_data, $data_to_db) {
method deleteQrcode (line 158) | public function deleteQrcode($id, $async = false) {
method addLogo (line 187) | private function addLogo($src, $logo = 'none') {
method failure (line 224) | private function failure($message) {
method success (line 233) | private function success($message) {
method info (line 242) | private function info($message) {
method debug (line 248) | public function debug($data) {
FILE: src/lib/StaticQrcode/StaticQrcode.php
class StaticQrcode (line 14) | class StaticQrcode {
method __construct (line 21) | public function __construct() {
method __destruct (line 28) | public function __destruct()
method setOrderingValues (line 35) | public function setOrderingValues()
method textQrcode (line 55) | public function textQrcode($text)
method emailQrcode (line 72) | public function emailQrcode($email, $subject, $message)
method phoneQrcode (line 89) | public function phoneQrcode($country_code, $phone_number)
method smsQrcode (line 107) | public function smsQrcode($country_code, $phone_number, $message)
method whatsappQrcode (line 125) | public function whatsappQrcode($country_code, $phone_number, $message)
method skypeQrcode (line 141) | public function skypeQrcode($skype_username)
method locationQrcode (line 158) | public function locationQrcode($latitude, $longitude)
method vcardQrcode (line 174) | public function vcardQrcode($fullname, $nickname, $email, $website, $p...
method eventQrcode (line 224) | public function eventQrcode($title, $start, $end, $timezone, $location...
method bookmarkQrcode (line 268) | public function bookmarkQrcode($url, $title)
method wifiQrcode (line 286) | public function wifiQrcode($encryption, $ssid, $password)
method paypalQrcode (line 309) | public function paypalQrcode($payment_type, $email, $item_name, $item_...
method bitcoinQrcode (line 337) | public function bitcoinQrcode($address, $amount, $label, $message)
method twofaQrcode (line 359) | public function twofaQrcode($algorithms, $secret, $label, $issuer)
method getQrcode (line 381) | public function getQrcode($id) {
method addQrcode (line 391) | private function addQrcode($type) {
method editQrcode (line 423) | public function editQrcode($input_data) {
method deleteQrcode (line 438) | public function deleteQrcode($id, $async = false) {
method failure (line 461) | private function failure($message) {
method success (line 470) | private function success($message) {
method info (line 479) | private function info($message) {
method requiredFieldsError (line 488) | private function requiredFieldsError() {
method debug (line 492) | public function debug($data) {
FILE: src/lib/Users/Users.php
class Users (line 4) | class Users
method __construct (line 9) | public function __construct()
method __destruct (line 16) | public function __destruct()
method setOrderingValues (line 23) | public function setOrderingValues()
method getAllUsers (line 34) | public function getAllUsers() {
method getUser (line 39) | public function getUser($id) {
method addUser (line 54) | public function addUser($input_data) {
method editUser (line 77) | public function editUser($input_data) {
method deleteUser (line 109) | public function deleteUser($id) {
method failure (line 128) | public function failure($message, $location = 'Location: users.php') {
method success (line 137) | public function success($message) {
method info (line 146) | public function info($message) {
FILE: src/lib/vCard/vCard.php
class vCard (line 12) | class vCard
method __construct (line 21) | public function __construct()
method name (line 34) | public function name($sName)
method address (line 46) | public function address($sAddress, $sCity, $sPostcode, $sState)
method nickName (line 58) | public function nickName($sNickname)
method email (line 69) | public function email($sMail)
method workPhone (line 80) | public function workPhone($sVal)
method homePhone (line 91) | public function homePhone($sVal)
method cellPhone (line 102) | public function cellPhone($sVal)
method url (line 113) | public function url($sUrl)
method categories (line 127) | public function categories($sCategories)
method photo (line 142) | public function photo($sImgUrl)
method role (line 167) | public function role($sRole)
method organization (line 184) | public function organization($sOrg)
method note (line 197) | public function note($sText)
method create (line 207) | public function create()
method get (line 216) | public function get()
FILE: src/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js
function __webpack_require__ (line 24) | function __webpack_require__(moduleId) {
function defineProperties (line 122) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 128) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 130) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Extension (line 140) | function Extension(colorpicker) {
function defineProperties (line 327) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 336) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 338) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function HSVAColor (line 351) | function HSVAColor(h, s, v, a) {
function ColorItem (line 447) | function ColorItem() {
function defineProperties (line 1389) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1399) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1401) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function _possibleConstructorReturn (line 1403) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
function _inherits (line 1405) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
function Palette (line 1461) | function Palette(colorpicker) {
function comparativeDistance (line 1922) | function comparativeDistance(x, y) {
function _interopRequireDefault (line 2636) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function defineProperties (line 2695) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 2741) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 2743) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Colorpicker (line 2825) | function Colorpicker(element, options) {
function _interopRequireDefault (line 3284) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function defineProperties (line 3308) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 3320) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 3322) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function _possibleConstructorReturn (line 3324) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
function _inherits (line 3326) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
function Debugger (line 3336) | function Debugger(colorpicker) {
function defineProperties (line 3490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 3502) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 3504) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function _possibleConstructorReturn (line 3506) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
function _inherits (line 3508) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
function Preview (line 3517) | function Preview(colorpicker) {
function defineProperties (line 3580) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 3592) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 3594) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function _possibleConstructorReturn (line 3596) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
function _inherits (line 3598) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
function Swatches (line 3613) | function Swatches(colorpicker) {
function defineProperties (line 3688) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 3694) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 3696) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SliderHandler (line 3706) | function SliderHandler(colorpicker) {
function defineProperties (line 3966) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 3976) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 3978) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function PopupHandler (line 3989) | function PopupHandler(colorpicker, root) {
function defineProperties (line 4437) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 4447) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 4449) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function InputHandler (line 4459) | function InputHandler(colorpicker) {
function Color (line 4774) | function Color(obj, model) {
function roundTo (line 5169) | function roundTo(num, places) {
function roundToPlace (line 5173) | function roundToPlace(places) {
function getset (line 5179) | function getset(model, channel, modifier) {
function maxfn (line 5210) | function maxfn(max) {
function assertArray (line 5216) | function assertArray(val) {
function zeroArray (line 5220) | function zeroArray(arr, length) {
function clamp (line 5463) | function clamp(num, min, max) {
function hexDouble (line 5467) | function hexDouble(num) {
function wrapRaw (line 5537) | function wrapRaw(fn) {
function wrapRounded (line 5558) | function wrapRounded(fn) {
function buildGraph (line 5627) | function buildGraph() {
function deriveBFS (line 5645) | function deriveBFS(fromModel) {
function link (line 5670) | function link(from, to) {
function wrapConversion (line 5676) | function wrapConversion(toModel, graph) {
function defineProperties (line 5724) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 5734) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 5736) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function ColorHandler (line 5746) | function ColorHandler(colorpicker) {
function defineProperties (line 6012) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 6018) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 6020) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function PickerHandler (line 6030) | function PickerHandler(colorpicker) {
function defineProperties (line 6171) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 6173) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function AddonHandler (line 6179) | function AddonHandler(colorpicker) {
FILE: src/plugins/bootstrap/js/bootstrap.bundle.js
function _defineProperties (line 14) | function _defineProperties(target, props) {
function _createClass (line 24) | function _createClass(Constructor, protoProps, staticProps) {
function _defineProperty (line 30) | function _defineProperty(obj, key, value) {
function ownKeys (line 45) | function ownKeys(object, enumerableOnly) {
function _objectSpread2 (line 59) | function _objectSpread2(target) {
function _inheritsLoose (line 79) | function _inheritsLoose(subClass, superClass) {
function toType (line 101) | function toType(obj) {
function getSpecialTransitionEndEvent (line 105) | function getSpecialTransitionEndEvent() {
function transitionEndEmulator (line 119) | function transitionEndEmulator(duration) {
function setTransitionEndSupport (line 134) | function setTransitionEndSupport() {
function Alert (line 291) | function Alert(element) {
function Button (line 461) | function Button(element) {
function Carousel (line 712) | function Carousel(element, config) {
function Collapse (line 1270) | function Collapse(element, config) {
function microtaskDebounce (line 1615) | function microtaskDebounce(fn) {
function taskDebounce (line 1629) | function taskDebounce(fn) {
function isFunction (line 1662) | function isFunction(functionToCheck) {
function getStyleComputedProperty (line 1674) | function getStyleComputedProperty(element, property) {
function getParentNode (line 1691) | function getParentNode(element) {
function getScrollParent (line 1705) | function getScrollParent(element) {
function getReferenceNode (line 1740) | function getReferenceNode(reference) {
function isIE (line 1754) | function isIE(version) {
function getOffsetParent (line 1771) | function getOffsetParent(element) {
function isOffsetContainer (line 1800) | function isOffsetContainer(element) {
function getRoot (line 1816) | function getRoot(node) {
function findCommonOffsetParent (line 1832) | function findCommonOffsetParent(element1, element2) {
function getScroll (line 1876) | function getScroll(element) {
function includeScroll (line 1900) | function includeScroll(rect, element) {
function getBordersSize (line 1923) | function getBordersSize(styles, axis) {
function getSize (line 1930) | function getSize(axis, body, html, computedStyle) {
function getWindowSizes (line 1934) | function getWindowSizes(document) {
function defineProperties (line 1952) | function defineProperties(target, props) {
function getClientRect (line 2009) | function getClientRect(offsets) {
function getBoundingClientRect (line 2023) | function getBoundingClientRect(element) {
function getOffsetRectRelativeToArbitraryNode (line 2072) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
function getViewportOffsetRectRelativeToArtbitraryNode (line 2124) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
function isFixed (line 2153) | function isFixed(element) {
function getFixedPositionOffsetParent (line 2176) | function getFixedPositionOffsetParent(element) {
function getBoundaries (line 2199) | function getBoundaries(popper, reference, padding, boundariesElement) {
function getArea (line 2253) | function getArea(_ref) {
function computeAutoPlacement (line 2269) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
function getReferenceOffsets (line 2330) | function getReferenceOffsets(state, popper, reference) {
function getOuterSizes (line 2344) | function getOuterSizes(element) {
function getOppositePlacement (line 2363) | function getOppositePlacement(placement) {
function getPopperOffsets (line 2380) | function getPopperOffsets(popper, referenceOffsets, placement) {
function find (line 2418) | function find(arr, check) {
function findIndex (line 2437) | function findIndex(arr, prop, value) {
function runModifiers (line 2462) | function runModifiers(modifiers, data, ends) {
function update (line 2492) | function update() {
function isModifierEnabled (line 2544) | function isModifierEnabled(modifiers, modifierName) {
function getSupportedPropertyName (line 2559) | function getSupportedPropertyName(property) {
function destroy (line 2578) | function destroy() {
function getWindow (line 2608) | function getWindow(element) {
function attachToScrollParents (line 2613) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
function setupEventListeners (line 2630) | function setupEventListeners(reference, options, state, updateBound) {
function enableEventListeners (line 2650) | function enableEventListeners() {
function removeEventListeners (line 2662) | function removeEventListeners(reference, state) {
function disableEventListeners (line 2686) | function disableEventListeners() {
function isNumeric (line 2700) | function isNumeric(n) {
function setStyles (line 2712) | function setStyles(element, styles) {
function setAttributes (line 2731) | function setAttributes(element, attributes) {
function applyStyle (line 2751) | function applyStyle(data) {
function applyStyleOnLoad (line 2780) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
function getRoundedOffsets (line 2817) | function getRoundedOffsets(data, shouldRound) {
function computeStyle (line 2856) | function computeStyle(data, options) {
function isModifierRequired (line 2957) | function isModifierRequired(modifiers, requestingName, requestedName) {
function arrow (line 2982) | function arrow(data, options) {
function getOppositeVariation (line 3064) | function getOppositeVariation(variation) {
function clockwise (line 3119) | function clockwise(placement) {
function flip (line 3140) | function flip(data, options) {
function keepTogether (line 3237) | function keepTogether(data) {
function toValue (line 3271) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
function parseOffset (line 3323) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
function offset (line 3399) | function offset(data, _ref) {
function preventOverflow (line 3440) | function preventOverflow(data, options) {
function shift (line 3511) | function shift(data) {
function hide (line 3544) | function hide(data) {
function inner (line 3582) | function inner(data) {
function Popper (line 4049) | function Popper(reference, popper) {
function Dropdown (line 4280) | function Dropdown(element, config) {
function Modal (line 4791) | function Modal(element, config) {
function allowedAttribute (line 5383) | function allowedAttribute(attr, allowedAttributeList) {
function sanitizeHtml (line 5407) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
function Tooltip (line 5545) | function Tooltip(element, config) {
function Popover (line 6228) | function Popover() {
function ScrollSpy (line 6414) | function ScrollSpy(element, config) {
function Tab (line 6708) | function Tab(element) {
function Toast (line 6944) | function Toast(element, config) {
FILE: src/plugins/bootstrap/js/bootstrap.js
function _defineProperties (line 15) | function _defineProperties(target, props) {
function _createClass (line 25) | function _createClass(Constructor, protoProps, staticProps) {
function _defineProperty (line 31) | function _defineProperty(obj, key, value) {
function ownKeys (line 46) | function ownKeys(object, enumerableOnly) {
function _objectSpread2 (line 60) | function _objectSpread2(target) {
function _inheritsLoose (line 80) | function _inheritsLoose(subClass, superClass) {
function toType (line 102) | function toType(obj) {
function getSpecialTransitionEndEvent (line 106) | function getSpecialTransitionEndEvent() {
function transitionEndEmulator (line 120) | function transitionEndEmulator(duration) {
function setTransitionEndSupport (line 135) | function setTransitionEndSupport() {
function Alert (line 292) | function Alert(element) {
function Button (line 462) | function Button(element) {
function Carousel (line 713) | function Carousel(element, config) {
function Collapse (line 1271) | function Collapse(element, config) {
function Dropdown (line 1667) | function Dropdown(element, config) {
function Modal (line 2178) | function Modal(element, config) {
function allowedAttribute (line 2770) | function allowedAttribute(attr, allowedAttributeList) {
function sanitizeHtml (line 2794) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
function Tooltip (line 2932) | function Tooltip(element, config) {
function Popover (line 3615) | function Popover() {
function ScrollSpy (line 3801) | function ScrollSpy(element, config) {
function Tab (line 4095) | function Tab(element) {
function Toast (line 4331) | function Toast(element, config) {
FILE: src/plugins/chart.js/Chart.bundle.js
function commonjsRequire (line 15) | function commonjsRequire () {
function createCommonjsModule (line 19) | function createCommonjsModule(fn, module) {
function getCjsExportFromNamespace (line 23) | function getCjsExportFromNamespace (n) {
function comparativeDistance (line 352) | function comparativeDistance(x, y) {
function buildGraph (line 1075) | function buildGraph() {
function deriveBFS (line 1093) | function deriveBFS(fromModel) {
function link (line 1118) | function link(from, to) {
function wrapConversion (line 1124) | function wrapConversion(toModel, graph) {
function wrapRaw (line 1163) | function wrapRaw(fn) {
function wrapRounded (line 1184) | function wrapRounded(fn) {
function getRgba (line 1408) | function getRgba(string) {
function getHsla (line 1477) | function getHsla(string) {
function getHwb (line 1493) | function getHwb(string) {
function getRgb (line 1509) | function getRgb(string) {
function getHsl (line 1514) | function getHsl(string) {
function getAlpha (line 1519) | function getAlpha(string) {
function hexString (line 1533) | function hexString(rgba, a) {
function rgbString (line 1545) | function rgbString(rgba, alpha) {
function rgbaString (line 1552) | function rgbaString(rgba, alpha) {
function percentString (line 1560) | function percentString(rgba, alpha) {
function percentaString (line 1571) | function percentaString(rgba, alpha) {
function hslString (line 1578) | function hslString(hsla, alpha) {
function hslaString (line 1585) | function hslaString(hsla, alpha) {
function hwbString (line 1595) | function hwbString(hwb, alpha) {
function keyword (line 1603) | function keyword(rgb) {
function scale (line 1608) | function scale(num, min, max) {
function hexDouble (line 1612) | function hexDouble(num) {
function toFontString (line 3002) | function toFontString(font) {
function interpolate (line 3275) | function interpolate(start, view, model, ease) {
function listenArrayEvents (line 3555) | function listenArrayEvents(array, listener) {
function unlistenArrayEvents (line 3596) | function unlistenArrayEvents(array, listener) {
function clipArc (line 4131) | function clipArc(ctx, arc) {
function drawFullCircleBorders (line 4153) | function drawFullCircleBorders(ctx, vm, arc, inner) {
function drawBorder (line 4180) | function drawBorder(ctx, vm, arc) {
function xRange (line 4447) | function xRange(mouseX) {
function yRange (line 4452) | function yRange(mouseY) {
function isVertical (line 4528) | function isVertical(vm) {
function getBarBounds (line 4538) | function getBarBounds(vm) {
function swap (line 4563) | function swap(orig, v1, v2) {
function parseBorderSkipped (line 4567) | function parseBorderSkipped(vm) {
function parseBorderWidth (line 4587) | function parseBorderWidth(vm, maxW, maxH) {
function boundingRects (line 4609) | function boundingRects(vm) {
function inRange (line 4631) | function inRange(vm, x, y) {
function computeMinSampleSize (line 4769) | function computeMinSampleSize(scale, pixels) {
function computeFitCategoryTraits (line 4792) | function computeFitCategoryTraits(index, ruler, options) {
function computeFlexCategoryTraits (line 4825) | function computeFlexCategoryTraits(index, ruler, options) {
function scaleClip (line 5791) | function scaleClip(scale, halfBorderWidth) {
function defaultClip (line 5802) | function defaultClip(xScale, yScale, borderWidth) {
function toClip (line 5815) | function toClip(value) {
function capControlPoint (line 6039) | function capControlPoint(pt, min, max) {
function capControlPoint (line 6596) | function capControlPoint(pt, min, max) {
function getRelativePosition (line 6699) | function getRelativePosition(e, chart) {
function parseVisibleItems (line 6715) | function parseVisibleItems(chart, handler) {
function getIntersectItems (line 6736) | function getIntersectItems(chart, position) {
function getNearestItems (line 6756) | function getNearestItems(chart, position, intersect, distanceMetric) {
function getDistanceMetricForAxis (line 6784) | function getDistanceMetricForAxis(axis) {
function indexMode (line 6795) | function indexMode(chart, e, options) {
function filterByPosition (line 6995) | function filterByPosition(array, position) {
function sortByWeight (line 7001) | function sortByWeight(array, reverse) {
function wrapBoxes (line 7011) | function wrapBoxes(boxes) {
function setLayoutDims (line 7028) | function setLayoutDims(layouts, params) {
function buildLayoutBoxes (line 7041) | function buildLayoutBoxes(boxes) {
function getCombinedMax (line 7057) | function getCombinedMax(maxPadding, chartArea, a, b) {
function updateDims (line 7061) | function updateDims(chartArea, params, layout) {
function handleMaxPadding (line 7093) | function handleMaxPadding(chartArea) {
function getMargins (line 7107) | function getMargins(horizontal, chartArea) {
function fitBoxes (line 7123) | function fitBoxes(boxes, chartArea, params) {
function placeBoxes (line 7152) | function placeBoxes(boxes, chartArea, params) {
function readUsedSize (line 7435) | function readUsedSize(element, property) {
function initCanvas (line 7446) | function initCanvas(canvas, config) {
function addListener (line 7521) | function addListener(node, type, listener) {
function removeListener (line 7525) | function removeListener(node, type, listener) {
function createEvent (line 7529) | function createEvent(type, chart, x, y, nativeEvent) {
function fromNativeEvent (line 7539) | function fromNativeEvent(event, chart) {
function throttled (line 7545) | function throttled(fn, thisArg) {
function createDiv (line 7563) | function createDiv(cls) {
function createResizer (line 7570) | function createResizer(handler) {
function watchForRender (line 7603) | function watchForRender(node, handler) {
function unwatchForRender (line 7625) | function unwatchForRender(node) {
function addResizeListener (line 7640) | function addResizeListener(node, listener, chart) {
function removeResizeListener (line 7677) | function removeResizeListener(node) {
function injectCSS (line 7694) | function injectCSS(rootNode, css) {
function pushOrConcat (line 8293) | function pushOrConcat(base, toPush) {
function splitNewlines (line 8312) | function splitNewlines(str) {
function createTooltipItem (line 8325) | function createTooltipItem(element) {
function getBaseModel (line 8350) | function getBaseModel(tooltipOpts) {
function getTooltipSize (line 8405) | function getTooltipSize(tooltip, model) {
function determineAlignment (line 8473) | function determineAlignment(tooltip, size) {
function getBackgroundPoint (line 8546) | function getBackgroundPoint(vm, size, alignment, chart) {
function getAlignedX (line 8597) | function getAlignedX(vm, align) {
function getBeforeAfterBodyLines (line 8608) | function getBeforeAfterBodyLines(callback) {
function mergeScaleConfig (line 9175) | function mergeScaleConfig(/* config objects ... */) {
function mergeConfig (line 9215) | function mergeConfig(/* config objects ... */) {
function initConfig (line 9234) | function initConfig(config) {
function updateConfig (line 9251) | function updateConfig(chart) {
function nextAvailableScaleId (line 9272) | function nextAvailableScaleId(axesOpts, prefix, index) {
function positionIsHorizontal (line 9285) | function positionIsHorizontal(position) {
function compare2Level (line 9289) | function compare2Level(l1, l2) {
function parseMaxStyle (line 10675) | function parseMaxStyle(styleValue, node, parentProperty) {
function isConstrainedValue (line 10695) | function isConstrainedValue(value) {
function getConstraintDimension (line 10706) | function getConstraintDimension(domNode, maxStyle, percentageProperty) {
function abstract (line 10900) | function abstract() {
function DateAdapter (line 10924) | function DateAdapter(options) {
function sample (line 11154) | function sample(arr, numItems) {
function getPixelForGridLine (line 11166) | function getPixelForGridLine(scale, index, offsetGridLines) {
function garbageCollect (line 11193) | function garbageCollect(caches, length) {
function computeLabelSizes (line 11211) | function computeLabelSizes(ctx, tickFonts, ticks, caches) {
function getTickMarkLength (line 11265) | function getTickMarkLength(options) {
function getScaleLabelHeight (line 11269) | function getScaleLabelHeight(options) {
function parseFontOptions (line 11282) | function parseFontOptions(options, nestedOpts) {
function parseTickFontOptions (line 11293) | function parseTickFontOptions(options) {
function nonSkipped (line 11300) | function nonSkipped(ticksToFilter) {
function getEvenSpacing (line 11312) | function getEvenSpacing(arr) {
function calculateSpacing (line 11328) | function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {
function getMajorIndices (line 11349) | function getMajorIndices(ticks) {
function skipMajors (line 11360) | function skipMajors(ticks, majorIndices, spacing) {
function skip (line 11378) | function skip(ticks, spacing, majorStart, majorEnd) {
function generateTicks (line 12665) | function generateTicks(generationOptions, dataRange) {
function getOrCreateStack (line 12916) | function getOrCreateStack(stacks, stacked, meta) {
function stackData (line 12934) | function stackData(scale, stacks, meta, data) {
function updateMinMax (line 12962) | function updateMinMax(scale, meta, data) {
function generateTicks$1 (line 13078) | function generateTicks$1(generationOptions, dataRange) {
function nonNegativeOrDefault (line 13128) | function nonNegativeOrDefault(value, defaultValue) {
function IDMatches (line 13139) | function IDMatches(meta) {
function getTickBackdropHeight (line 13426) | function getTickBackdropHeight(opts) {
function measureLabelSize (line 13435) | function measureLabelSize(ctx, lineHeight, label) {
function determineLimits (line 13449) | function determineLimits(angle, pos, size, min, max) {
function fitWithPointLabels (line 13471) | function fitWithPointLabels(scale) {
function getTextAlignForAngle (line 13551) | function getTextAlignForAngle(angle) {
function fillText (line 13561) | function fillText(ctx, text, position, lineHeight) {
function adjustPointPositionForLabelHeight (line 13575) | function adjustPointPositionForLabelHeight(angle, textSize, position) {
function drawPointLabels (line 13583) | function drawPointLabels(scale) {
function drawRadiusLine (line 13614) | function drawRadiusLine(scale, gridLineOpts, radius, index) {
function numberOrZero (line 13653) | function numberOrZero(param) {
function sorter (line 13982) | function sorter(a, b) {
function arrayUnique (line 13986) | function arrayUnique(items) {
function getMin (line 14002) | function getMin(options) {
function getMax (line 14006) | function getMax(options) {
function buildLookupTable (line 14025) | function buildLookupTable(timestamps, min, max, distribution) {
function lookup (line 14061) | function lookup(table, key, value) {
function interpolate$1 (line 14093) | function interpolate$1(table, skey, sval, tkey) {
function toTimestamp (line 14107) | function toTimestamp(scale, input) {
function parse (line 14143) | function parse(scale, input) {
function determineUnitForAutoTicks (line 14164) | function determineUnitForAutoTicks(minUnit, min, max, capacity) {
function determineUnitForFormatting (line 14183) | function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {
function determineMajorUnit (line 14196) | function determineMajorUnit(unit) {
function generate (line 14210) | function generate(scale, min, max, capacity) {
function computeOffsets (line 14251) | function computeOffsets(table, ticks, min, max, options) {
function setMajorTicks (line 14274) | function setMajorTicks(scale, ticks, map, majorUnit) {
function ticksFromTimestamps (line 14289) | function ticksFromTimestamps(scale, values, majorUnit) {
function hooks (line 14698) | function hooks () {
function setHookCallback (line 14704) | function setHookCallback (callback) {
function isArray (line 14708) | function isArray(input) {
function isObject (line 14712) | function isObject(input) {
function isObjectEmpty (line 14718) | function isObjectEmpty(obj) {
function isUndefined (line 14732) | function isUndefined(input) {
function isNumber (line 14736) | function isNumber(input) {
function isDate (line 14740) | function isDate(input) {
function map (line 14744) | function map(arr, fn) {
function hasOwnProp (line 14752) | function hasOwnProp(a, b) {
function extend (line 14756) | function extend(a, b) {
function createUTC (line 14774) | function createUTC (input, format, locale, strict) {
function defaultParsingFlags (line 14778) | function defaultParsingFlags() {
function getParsingFlags (line 14798) | function getParsingFlags(m) {
function isValid (line 14823) | function isValid(m) {
function createInvalid (line 14857) | function createInvalid (flags) {
function copyConfig (line 14873) | function copyConfig(to, from) {
function Moment (line 14923) | function Moment(config) {
function isMoment (line 14938) | function isMoment (obj) {
function absFloor (line 14942) | function absFloor (number) {
function toInt (line 14951) | function toInt(argumentForCoercion) {
function compareArrays (line 14963) | function compareArrays(array1, array2, dontConvert) {
function warn (line 14977) | function warn(msg) {
function deprecate (line 14984) | function deprecate(msg, fn) {
function deprecateSimple (line 15016) | function deprecateSimple(name, msg) {
function isFunction (line 15029) | function isFunction(input) {
function set (line 15033) | function set (config) {
function mergeConfigs (line 15052) | function mergeConfigs(parentConfig, childConfig) {
function Locale (line 15078) | function Locale(config) {
function calendar (line 15109) | function calendar (key, mom, now) {
function longDateFormat (line 15123) | function longDateFormat (key) {
function invalidDate (line 15140) | function invalidDate () {
function ordinal (line 15147) | function ordinal (number) {
function relativeTime (line 15168) | function relativeTime (number, withoutSuffix, string, isFuture) {
function pastFuture (line 15175) | function pastFuture (diff, output) {
function addUnitAlias (line 15182) | function addUnitAlias (unit, shorthand) {
function normalizeUnits (line 15187) | function normalizeUnits(units) {
function normalizeObjectUnits (line 15191) | function normalizeObjectUnits(inputObject) {
function addUnitPriority (line 15210) | function addUnitPriority(unit, priority) {
function getPrioritizedUnits (line 15214) | function getPrioritizedUnits(unitsObj) {
function zeroFill (line 15225) | function zeroFill(number, targetLength, forceSign) {
function addFormatToken (line 15245) | function addFormatToken (token, padded, ordinal, callback) {
function removeFormattingTokens (line 15267) | function removeFormattingTokens(input) {
function makeFormatFunction (line 15274) | function makeFormatFunction(format) {
function formatMoment (line 15295) | function formatMoment(m, format) {
function expandFormat (line 15306) | function expandFormat(format, locale) {
function addRegexToken (line 15349) | function addRegexToken (token, regex, strictRegex) {
function getParseRegexForToken (line 15355) | function getParseRegexForToken (token, config) {
function unescapeFormat (line 15364) | function unescapeFormat(s) {
function regexEscape (line 15370) | function regexEscape(s) {
function addParseToken (line 15376) | function addParseToken (token, callback) {
function addWeekParseToken (line 15391) | function addWeekParseToken (token, callback) {
function addTimeToArrayFromToken (line 15398) | function addTimeToArrayFromToken(token, input, config) {
function daysInYear (line 15458) | function daysInYear(year) {
function isLeapYear (line 15462) | function isLeapYear(year) {
function getIsLeapYear (line 15476) | function getIsLeapYear () {
function makeGetSet (line 15480) | function makeGetSet (unit, keepTime) {
function get (line 15492) | function get (mom, unit) {
function set$1 (line 15497) | function set$1 (mom, unit, value) {
function stringGet (line 15510) | function stringGet (units) {
function stringSet (line 15519) | function stringSet (units, value) {
function mod (line 15535) | function mod(n, x) {
function daysInMonth (line 15556) | function daysInMonth(year, month) {
function localeMonths (line 15616) | function localeMonths (m, format) {
function localeMonthsShort (line 15626) | function localeMonthsShort (m, format) {
function handleStrictParse (line 15635) | function handleStrictParse(monthName, format, strict) {
function localeMonthsParse (line 15676) | function localeMonthsParse (monthName, format, strict) {
function setMonth (line 15716) | function setMonth (mom, value) {
function getSetMonth (line 15741) | function getSetMonth (value) {
function getDaysInMonth (line 15751) | function getDaysInMonth () {
function monthsShortRegex (line 15756) | function monthsShortRegex (isStrict) {
function monthsRegex (line 15776) | function monthsRegex (isStrict) {
function computeMonthsParse (line 15795) | function computeMonthsParse () {
function createDate (line 15829) | function createDate (y, m, d, h, M, s, ms) {
function createUTCDate (line 15847) | function createUTCDate (y) {
function firstWeekOffset (line 15866) | function firstWeekOffset(year, dow, doy) {
function dayOfYearFromWeeks (line 15876) | function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
function weekOfYear (line 15899) | function weekOfYear(mom, dow, doy) {
function weeksInYear (line 15921) | function weeksInYear(year, dow, doy) {
function localeWeek (line 15957) | function localeWeek (mom) {
function localeFirstDayOfWeek (line 15966) | function localeFirstDayOfWeek () {
function localeFirstDayOfYear (line 15970) | function localeFirstDayOfYear () {
function getSetWeek (line 15976) | function getSetWeek (input) {
function getSetISOWeek (line 15981) | function getSetISOWeek (input) {
function parseWeekday (line 16047) | function parseWeekday(input, locale) {
function parseIsoWeekday (line 16064) | function parseIsoWeekday(input, locale) {
function shiftWeekdays (line 16072) | function shiftWeekdays (ws, n) {
function localeWeekdays (line 16077) | function localeWeekdays (m, format) {
function localeWeekdaysShort (line 16085) | function localeWeekdaysShort (m) {
function localeWeekdaysMin (line 16091) | function localeWeekdaysMin (m) {
function handleStrictParse$1 (line 16096) | function handleStrictParse$1(weekdayName, format, strict) {
function localeWeekdaysParse (line 16160) | function localeWeekdaysParse (weekdayName, format, strict) {
function getSetDayOfWeek (line 16202) | function getSetDayOfWeek (input) {
function getSetLocaleDayOfWeek (line 16215) | function getSetLocaleDayOfWeek (input) {
function getSetISODayOfWeek (line 16223) | function getSetISODayOfWeek (input) {
function weekdaysRegex (line 16241) | function weekdaysRegex (isStrict) {
function weekdaysShortRegex (line 16261) | function weekdaysShortRegex (isStrict) {
function weekdaysMinRegex (line 16281) | function weekdaysMinRegex (isStrict) {
function computeWeekdaysParse (line 16301) | function computeWeekdaysParse () {
function hFormat (line 16344) | function hFormat() {
function kFormat (line 16348) | function kFormat() {
function meridiem (line 16374) | function meridiem (token, lowercase) {
function matchMeridiem (line 16392) | function matchMeridiem (isStrict, locale) {
function localeIsPM (line 16452) | function localeIsPM (input) {
function localeMeridiem (line 16459) | function localeMeridiem (hours, minutes, isLower) {
function normalizeLocale (line 16501) | function normalizeLocale(key) {
function chooseLocale (line 16508) | function chooseLocale(names) {
function loadLocale (line 16532) | function loadLocale(name) {
function getSetGlobalLocale (line 16550) | function getSetGlobalLocale (key, values) {
function defineLocale (line 16575) | function defineLocale (name, config) {
function updateLocale (line 16627) | function updateLocale(name, config) {
function getLocale (line 16656) | function getLocale (key) {
function listLocales (line 16679) | function listLocales() {
function checkOverflow (line 16683) | function checkOverflow (m) {
function defaults (line 16714) | function defaults(a, b, c) {
function currentDateArray (line 16724) | function currentDateArray(config) {
function configFromArray (line 16737) | function configFromArray (config) {
function dayOfYearFromWeekInfo (line 16806) | function dayOfYearFromWeekInfo(config) {
function configFromISO (line 16901) | function configFromISO(config) {
function extractFromRFC2822Strings (line 16956) | function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, m...
function untruncateYear (line 16972) | function untruncateYear(yearStr) {
function preprocessRFC2822 (line 16982) | function preprocessRFC2822(s) {
function checkWeekday (line 16987) | function checkWeekday(weekdayStr, parsedInput, config) {
function calculateOffset (line 17014) | function calculateOffset(obsOffset, militaryOffset, numOffset) {
function configFromRFC2822 (line 17028) | function configFromRFC2822(config) {
function configFromString (line 17049) | function configFromString(config) {
function configFromStringAndFormat (line 17092) | function configFromStringAndFormat(config) {
function meridiemFixWrap (line 17164) | function meridiemFixWrap (locale, hour, meridiem) {
function configFromStringAndArray (line 17190) | function configFromStringAndArray(config) {
function configFromObject (line 17234) | function configFromObject(config) {
function createFromConfig (line 17247) | function createFromConfig (config) {
function prepareConfig (line 17258) | function prepareConfig (config) {
function configFromInput (line 17291) | function configFromInput(config) {
function createLocalOrUTC (line 17314) | function createLocalOrUTC (input, format, locale, strict, isUTC) {
function createLocal (line 17338) | function createLocal (input, format, locale, strict) {
function pickBy (line 17371) | function pickBy(fn, moments) {
function min (line 17389) | function min () {
function max (line 17395) | function max () {
function isDurationValid (line 17407) | function isDurationValid(m) {
function isValid$1 (line 17429) | function isValid$1() {
function createInvalid$1 (line 17433) | function createInvalid$1() {
function Duration (line 17437) | function Duration (duration) {
function isDuration (line 17474) | function isDuration (obj) {
function absRound (line 17478) | function absRound (number) {
function offset (line 17488) | function offset (token, separator) {
function offsetFromString (line 17519) | function offsetFromString(matcher, string) {
function cloneWithOffset (line 17536) | function cloneWithOffset(input, model) {
function getDateOffset (line 17550) | function getDateOffset (m) {
function getSetOffset (line 17574) | function getSetOffset (input, keepLocalTime, keepMinutes) {
function getSetZone (line 17612) | function getSetZone (input, keepLocalTime) {
function setOffsetToUTC (line 17626) | function setOffsetToUTC (keepLocalTime) {
function setOffsetToLocal (line 17630) | function setOffsetToLocal (keepLocalTime) {
function setOffsetToParsedOffset (line 17642) | function setOffsetToParsedOffset () {
function hasAlignedHourOffset (line 17657) | function hasAlignedHourOffset (input) {
function isDaylightSavingTime (line 17666) | function isDaylightSavingTime () {
function isDaylightSavingTimeShifted (line 17673) | function isDaylightSavingTimeShifted () {
function isLocal (line 17694) | function isLocal () {
function isUtcOffset (line 17698) | function isUtcOffset () {
function isUtc (line 17702) | function isUtc () {
function createDuration (line 17714) | function createDuration (input, key) {
function parseIso (line 17778) | function parseIso (inp, sign) {
function positiveMomentsDifference (line 17787) | function positiveMomentsDifference(base, other) {
function momentsDifference (line 17801) | function momentsDifference(base, other) {
function createAdder (line 17820) | function createAdder(direction, name) {
function addSubtract (line 17837) | function addSubtract (mom, duration, isAdding, updateOffset) {
function getCalendarFormat (line 17866) | function getCalendarFormat(myMoment, now) {
function calendar$1 (line 17876) | function calendar$1 (time, formats) {
function clone (line 17888) | function clone () {
function isAfter (line 17892) | function isAfter (input, units) {
function isBefore (line 17905) | function isBefore (input, units) {
function isBetween (line 17918) | function isBetween (from, to, units, inclusivity) {
function isSame (line 17929) | function isSame (input, units) {
function isSameOrAfter (line 17944) | function isSameOrAfter (input, units) {
function isSameOrBefore (line 17948) | function isSameOrBefore (input, units) {
function diff (line 17952) | function diff (input, units, asFloat) {
function monthDiff (line 17986) | function monthDiff (a, b) {
function toString (line 18010) | function toString () {
function toISOString (line 18014) | function toISOString(keepOffset) {
function inspect (line 18040) | function inspect () {
function format (line 18058) | function format (inputString) {
function from (line 18066) | function from (time, withoutSuffix) {
function fromNow (line 18076) | function fromNow (withoutSuffix) {
function to (line 18080) | function to (time, withoutSuffix) {
function toNow (line 18090) | function toNow (withoutSuffix) {
function locale (line 18097) | function locale (key) {
function localeData (line 18122) | function localeData () {
function mod$1 (line 18132) | function mod$1(dividend, divisor) {
function localStartOfDate (line 18136) | function localStartOfDate(y, m, d) {
function utcStartOfDate (line 18146) | function utcStartOfDate(y, m, d) {
function startOf (line 18156) | function startOf (units) {
function endOf (line 18204) | function endOf (units) {
function valueOf (line 18252) | function valueOf () {
function unix (line 18256) | function unix () {
function toDate (line 18260) | function toDate () {
function toArray (line 18264) | function toArray () {
function toObject (line 18269) | function toObject () {
function toJSON (line 18282) | function toJSON () {
function isValid$2 (line 18287) | function isValid$2 () {
function parsingFlags (line 18291) | function parsingFlags () {
function invalidAt (line 18295) | function invalidAt () {
function creationData (line 18299) | function creationData() {
function addWeekYearFormatToken (line 18319) | function addWeekYearFormatToken (token, getter) {
function getSetWeekYear (line 18360) | function getSetWeekYear (input) {
function getSetISOWeekYear (line 18369) | function getSetISOWeekYear (input) {
function getISOWeeksInYear (line 18374) | function getISOWeeksInYear () {
function getWeeksInYear (line 18378) | function getWeeksInYear () {
function getSetWeekYearHelper (line 18383) | function getSetWeekYearHelper(input, week, weekday, dow, doy) {
function setWeekAll (line 18396) | function setWeekAll(weekYear, week, weekday, dow, doy) {
function getSetQuarter (line 18427) | function getSetQuarter (input) {
function getSetDayOfYear (line 18485) | function getSetDayOfYear (input) {
function parseMs (line 18584) | function parseMs(input, array) {
function getZoneAbbr (line 18602) | function getZoneAbbr () {
function getZoneName (line 18606) | function getZoneName () {
function createUnix (line 18688) | function createUnix (input) {
function createInZone (line 18692) | function createInZone () {
function preParsePostFormat (line 18696) | function preParsePostFormat (string) {
function get$1 (line 18733) | function get$1 (format, index, field, setter) {
function listMonthsImpl (line 18739) | function listMonthsImpl (format, index, field) {
function listWeekdaysImpl (line 18767) | function listWeekdaysImpl (localeSorted, format, index, field) {
function listMonths (line 18803) | function listMonths (format, index) {
function listMonthsShort (line 18807) | function listMonthsShort (format, index) {
function listWeekdays (line 18811) | function listWeekdays (localeSorted, format, index) {
function listWeekdaysShort (line 18815) | function listWeekdaysShort (localeSorted, format, index) {
function listWeekdaysMin (line 18819) | function listWeekdaysMin (localeSorted, format, index) {
function abs (line 18842) | function abs () {
function addSubtract$1 (line 18859) | function addSubtract$1 (duration, input, value, direction) {
function add$1 (line 18870) | function add$1 (input, value) {
function subtract$1 (line 18875) | function subtract$1 (input, value) {
function absCeil (line 18879) | function absCeil (number) {
function bubble (line 18887) | function bubble () {
function daysToMonths (line 18934) | function daysToMonths (days) {
function monthsToDays (line 18940) | function monthsToDays (months) {
function as (line 18945) | function as (units) {
function valueOf$1 (line 18980) | function valueOf$1 () {
function makeAs (line 18992) | function makeAs (alias) {
function clone$1 (line 19008) | function clone$1 () {
function get$2 (line 19012) | function get$2 (units) {
function makeGetter (line 19017) | function makeGetter(name) {
function weeks (line 19031) | function weeks () {
function substituteTimeAgo (line 19046) | function substituteTimeAgo(string, number, withoutSuffix, isFuture, loca...
function relativeTime$1 (line 19050) | function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
function getSetRelativeTimeRounding (line 19078) | function getSetRelativeTimeRounding (roundingFunction) {
function getSetRelativeTimeThreshold (line 19090) | function getSetRelativeTimeThreshold (threshold, limit) {
function humanize (line 19104) | function humanize (withSuffix) {
function sign (line 19121) | function sign(x) {
function toISOString$1 (line 19125) | function toISOString$1() {
function decodeFill (line 19401) | function decodeFill(el, index, count) {
function computeLinearBoundary (line 19450) | function computeLinearBoundary(source) {
function computeCircularBoundary (line 19492) | function computeCircularBoundary(source) {
function computeBoundary (line 19521) | function computeBoundary(source) {
function resolveTarget (line 19530) | function resolveTarget(sources, index, propagate) {
function createMapper (line 19561) | function createMapper(source) {
function isDrawable (line 19576) | function isDrawable(point) {
function drawArea (line 19580) | function drawArea(ctx, curve0, curve1, len0, len1) {
function doFill (line 19612) | function doFill(ctx, points, mapper, view, color, loop) {
function getBoxWidth (line 19826) | function getBoxWidth(labelOpts, fontSize) {
function createNewLegendAndAttach (line 20298) | function createNewLegendAndAttach(chart, legendOpts) {
function createNewTitleBlockAndAttach (line 20542) | function createNewTitleBlockAndAttach(chart, titleOpts) {
FILE: src/plugins/chart.js/Chart.js
function createCommonjsModule (line 15) | function createCommonjsModule(fn, module) {
function getCjsExportFromNamespace (line 19) | function getCjsExportFromNamespace (n) {
function comparativeDistance (line 348) | function comparativeDistance(x, y) {
function buildGraph (line 1071) | function buildGraph() {
function deriveBFS (line 1089) | function deriveBFS(fromModel) {
function link (line 1114) | function link(from, to) {
function wrapConversion (line 1120) | function wrapConversion(toModel, graph) {
function wrapRaw (line 1159) | function wrapRaw(fn) {
function wrapRounded (line 1180) | function wrapRounded(fn) {
function getRgba (line 1404) | function getRgba(string) {
function getHsla (line 1473) | function getHsla(string) {
function getHwb (line 1489) | function getHwb(string) {
function getRgb (line 1505) | function getRgb(string) {
function getHsl (line 1510) | function getHsl(string) {
function getAlpha (line 1515) | function getAlpha(string) {
function hexString (line 1529) | function hexString(rgba, a) {
function rgbString (line 1541) | function rgbString(rgba, alpha) {
function rgbaString (line 1548) | function rgbaString(rgba, alpha) {
function percentString (line 1556) | function percentString(rgba, alpha) {
function percentaString (line 1567) | function percentaString(rgba, alpha) {
function hslString (line 1574) | function hslString(hsla, alpha) {
function hslaString (line 1581) | function hslaString(hsla, alpha) {
function hwbString (line 1591) | function hwbString(hwb, alpha) {
function keyword (line 1599) | function keyword(rgb) {
function scale (line 1604) | function scale(num, min, max) {
function hexDouble (line 1608) | function hexDouble(num) {
function toFontString (line 2998) | function toFontString(font) {
function interpolate (line 3271) | function interpolate(start, view, model, ease) {
function listenArrayEvents (line 3551) | function listenArrayEvents(array, listener) {
function unlistenArrayEvents (line 3592) | function unlistenArrayEvents(array, listener) {
function clipArc (line 4127) | function clipArc(ctx, arc) {
function drawFullCircleBorders (line 4149) | function drawFullCircleBorders(ctx, vm, arc, inner) {
function drawBorder (line 4176) | function drawBorder(ctx, vm, arc) {
function xRange (line 4443) | function xRange(mouseX) {
function yRange (line 4448) | function yRange(mouseY) {
function isVertical (line 4524) | function isVertical(vm) {
function getBarBounds (line 4534) | function getBarBounds(vm) {
function swap (line 4559) | function swap(orig, v1, v2) {
function parseBorderSkipped (line 4563) | function parseBorderSkipped(vm) {
function parseBorderWidth (line 4583) | function parseBorderWidth(vm, maxW, maxH) {
function boundingRects (line 4605) | function boundingRects(vm) {
function inRange (line 4627) | function inRange(vm, x, y) {
function computeMinSampleSize (line 4765) | function computeMinSampleSize(scale, pixels) {
function computeFitCategoryTraits (line 4788) | function computeFitCategoryTraits(index, ruler, options) {
function computeFlexCategoryTraits (line 4821) | function computeFlexCategoryTraits(index, ruler, options) {
function scaleClip (line 5787) | function scaleClip(scale, halfBorderWidth) {
function defaultClip (line 5798) | function defaultClip(xScale, yScale, borderWidth) {
function toClip (line 5811) | function toClip(value) {
function capControlPoint (line 6035) | function capControlPoint(pt, min, max) {
function capControlPoint (line 6592) | function capControlPoint(pt, min, max) {
function getRelativePosition (line 6695) | function getRelativePosition(e, chart) {
function parseVisibleItems (line 6711) | function parseVisibleItems(chart, handler) {
function getIntersectItems (line 6732) | function getIntersectItems(chart, position) {
function getNearestItems (line 6752) | function getNearestItems(chart, position, intersect, distanceMetric) {
function getDistanceMetricForAxis (line 6780) | function getDistanceMetricForAxis(axis) {
function indexMode (line 6791) | function indexMode(chart, e, options) {
function filterByPosition (line 6991) | function filterByPosition(array, position) {
function sortByWeight (line 6997) | function sortByWeight(array, reverse) {
function wrapBoxes (line 7007) | function wrapBoxes(boxes) {
function setLayoutDims (line 7024) | function setLayoutDims(layouts, params) {
function buildLayoutBoxes (line 7037) | function buildLayoutBoxes(boxes) {
function getCombinedMax (line 7053) | function getCombinedMax(maxPadding, chartArea, a, b) {
function updateDims (line 7057) | function updateDims(chartArea, params, layout) {
function handleMaxPadding (line 7089) | function handleMaxPadding(chartArea) {
function getMargins (line 7103) | function getMargins(horizontal, chartArea) {
function fitBoxes (line 7119) | function fitBoxes(boxes, chartArea, params) {
function placeBoxes (line 7148) | function placeBoxes(boxes, chartArea, params) {
function readUsedSize (line 7431) | function readUsedSize(element, property) {
function initCanvas (line 7442) | function initCanvas(canvas, config) {
function addListener (line 7517) | function addListener(node, type, listener) {
function removeListener (line 7521) | function removeListener(node, type, listener) {
function createEvent (line 7525) | function createEvent(type, chart, x, y, nativeEvent) {
function fromNativeEvent (line 7535) | function fromNativeEvent(event, chart) {
function throttled (line 7541) | function throttled(fn, thisArg) {
function createDiv (line 7559) | function createDiv(cls) {
function createResizer (line 7566) | function createResizer(handler) {
function watchForRender (line 7599) | function watchForRender(node, handler) {
function unwatchForRender (line 7621) | function unwatchForRender(node) {
function addResizeListener (line 7636) | function addResizeListener(node, listener, chart) {
function removeResizeListener (line 7673) | function removeResizeListener(node) {
function injectCSS (line 7690) | function injectCSS(rootNode, css) {
function pushOrConcat (line 8289) | function pushOrConcat(base, toPush) {
function splitNewlines (line 8308) | function splitNewlines(str) {
function createTooltipItem (line 8321) | function createTooltipItem(element) {
function getBaseModel (line 8346) | function getBaseModel(tooltipOpts) {
function getTooltipSize (line 8401) | function getTooltipSize(tooltip, model) {
function determineAlignment (line 8469) | function determineAlignment(tooltip, size) {
function getBackgroundPoint (line 8542) | function getBackgroundPoint(vm, size, alignment, chart) {
function getAlignedX (line 8593) | function getAlignedX(vm, align) {
function getBeforeAfterBodyLines (line 8604) | function getBeforeAfterBodyLines(callback) {
function mergeScaleConfig (line 9171) | function mergeScaleConfig(/* config objects ... */) {
function mergeConfig (line 9211) | function mergeConfig(/* config objects ... */) {
function initConfig (line 9230) | function initConfig(config) {
function updateConfig (line 9247) | function updateConfig(chart) {
function nextAvailableScaleId (line 9268) | function nextAvailableScaleId(axesOpts, prefix, index) {
function positionIsHorizontal (line 9281) | function positionIsHorizontal(position) {
function compare2Level (line 9285) | function compare2Level(l1, l2) {
function parseMaxStyle (line 10671) | function parseMaxStyle(styleValue, node, parentProperty) {
function isConstrainedValue (line 10691) | function isConstrainedValue(value) {
function getConstraintDimension (line 10702) | function getConstraintDimension(domNode, maxStyle, percentageProperty) {
function abstract (line 10896) | function abstract() {
function DateAdapter (line 10920) | function DateAdapter(options) {
function sample (line 11150) | function sample(arr, numItems) {
function getPixelForGridLine (line 11162) | function getPixelForGridLine(scale, index, offsetGridLines) {
function garbageCollect (line 11189) | function garbageCollect(caches, length) {
function computeLabelSizes (line 11207) | function computeLabelSizes(ctx, tickFonts, ticks, caches) {
function getTickMarkLength (line 11261) | function getTickMarkLength(options) {
function getScaleLabelHeight (line 11265) | function getScaleLabelHeight(options) {
function parseFontOptions (line 11278) | function parseFontOptions(options, nestedOpts) {
function parseTickFontOptions (line 11289) | function parseTickFontOptions(options) {
function nonSkipped (line 11296) | function nonSkipped(ticksToFilter) {
function getEvenSpacing (line 11308) | function getEvenSpacing(arr) {
function calculateSpacing (line 11324) | function calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {
function getMajorIndices (line 11345) | function getMajorIndices(ticks) {
function skipMajors (line 11356) | function skipMajors(ticks, majorIndices, spacing) {
function skip (line 11374) | function skip(ticks, spacing, majorStart, majorEnd) {
function generateTicks (line 12661) | function generateTicks(generationOptions, dataRange) {
function getOrCreateStack (line 12912) | function getOrCreateStack(stacks, stacked, meta) {
function stackData (line 12930) | function stackData(scale, stacks, meta, data) {
function updateMinMax (line 12958) | function updateMinMax(scale, meta, data) {
function generateTicks$1 (line 13074) | function generateTicks$1(generationOptions, dataRange) {
function nonNegativeOrDefault (line 13124) | function nonNegativeOrDefault(value, defaultValue) {
function IDMatches (line 13135) | function IDMatches(meta) {
function getTickBackdropHeight (line 13422) | function getTickBackdropHeight(opts) {
function measureLabelSize (line 13431) | function measureLabelSize(ctx, lineHeight, label) {
function determineLimits (line 13445) | function determineLimits(angle, pos, size, min, max) {
function fitWithPointLabels (line 13467) | function fitWithPointLabels(scale) {
function getTextAlignForAngle (line 13547) | function getTextAlignForAngle(angle) {
function fillText (line 13557) | function fillText(ctx, text, position, lineHeight) {
function adjustPointPositionForLabelHeight (line 13571) | function adjustPointPositionForLabelHeight(angle, textSize, position) {
function drawPointLabels (line 13579) | function drawPointLabels(scale) {
function drawRadiusLine (line 13610) | function drawRadiusLine(scale, gridLineOpts, radius, index) {
function numberOrZero (line 13649) | function numberOrZero(param) {
function sorter (line 13978) | function sorter(a, b) {
function arrayUnique (line 13982) | function arrayUnique(items) {
function getMin (line 13998) | function getMin(options) {
function getMax (line 14002) | function getMax(options) {
function buildLookupTable (line 14021) | function buildLookupTable(timestamps, min, max, distribution) {
function lookup (line 14057) | function lookup(table, key, value) {
function interpolate$1 (line 14089) | function interpolate$1(table, skey, sval, tkey) {
function toTimestamp (line 14103) | function toTimestamp(scale, input) {
function parse (line 14139) | function parse(scale, input) {
function determineUnitForAutoTicks (line 14160) | function determineUnitForAutoTicks(minUnit, min, max, capacity) {
function determineUnitForFormatting (line 14179) | function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {
function determineMajorUnit (line 14192) | function determineMajorUnit(unit) {
function generate (line 14206) | function generate(scale, min, max, capacity) {
function computeOffsets (line 14247) | function computeOffsets(table, ticks, min, max, options) {
function setMajorTicks (line 14270) | function setMajorTicks(scale, ticks, map, majorUnit) {
function ticksFromTimestamps (line 14285) | function ticksFromTimestamps(scale, values, majorUnit) {
function decodeFill (line 14797) | function decodeFill(el, index, count) {
function computeLinearBoundary (line 14846) | function computeLinearBoundary(source) {
function computeCircularBoundary (line 14888) | function computeCircularBoundary(source) {
function computeBoundary (line 14917) | function computeBoundary(source) {
function resolveTarget (line 14926) | function resolveTarget(sources, index, propagate) {
function createMapper (line 14957) | function createMapper(source) {
function isDrawable (line 14972) | function isDrawable(point) {
function drawArea (line 14976) | function drawArea(ctx, curve0, curve1, len0, len1) {
function doFill (line 15008) | function doFill(ctx, points, mapper, view, color, loop) {
function getBoxWidth (line 15222) | function getBoxWidth(labelOpts, fontSize) {
function createNewLegendAndAttach (line 15694) | function createNewLegendAndAttach(chart, legendOpts) {
function createNewTitleBlockAndAttach (line 15938) | function createNewTitleBlockAndAttach(chart, titleOpts) {
FILE: src/plugins/daterangepicker/example/amd/main.js
function updateConfig (line 36) | function updateConfig() {
FILE: src/plugins/daterangepicker/example/amd/require.js
function ka (line 6) | function ka(b,c,d,g){return g||""}
function K (line 6) | function K(b){return"[object Function]"===Q.call(b)}
function L (line 6) | function L(b){return"[object Array]"===Q.call(b)}
function y (line 6) | function y(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+...
function X (line 6) | function X(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b))...
function x (line 6) | function x(b,c){return la.call(b,c)}
function e (line 6) | function e(b,c){return x(b,c)&&b[c]}
function D (line 6) | function D(b,c){for(var d in b)if(x(b,d)&&c(b[d],d))break}
function Y (line 6) | function Y(b,c,d,g){c&&D(c,function(c,e){if(d||!x(b,e))!g||"object"!==
function z (line 7) | function z(b,c){return function(){return c.apply(b,arguments)}}
function ha (line 7) | function ha(b){throw b;}
function ia (line 7) | function ia(b){if(!b)return b;var c=ga;y(b.split("."),function(b){c=c[b]...
function F (line 7) | function F(b,c,d,g){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"...
function ma (line 7) | function ma(b){function c(a,n,b){var h,k,f,c,d,l,g,r;n=n&&n.split("/");v...
function pa (line 30) | function pa(){if(N&&"interactive"===N.readyState)return N;X(document.get...
FILE: src/plugins/daterangepicker/example/browserify/main.js
function updateConfig (line 31) | function updateConfig() {
FILE: src/plugins/daterangepicker/website.js
function updateConfig (line 27) | function updateConfig() {
FILE: src/plugins/daterangepicker/website/website.js
function updateConfig (line 27) | function updateConfig() {
FILE: src/plugins/jquery-ui/external/jquery/jquery.js
function isArrayLike (line 563) | function isArrayLike( obj ) {
function Sizzle (line 772) | function Sizzle( selector, context, results, seed ) {
function createCache (line 912) | function createCache() {
function markFunction (line 930) | function markFunction( fn ) {
function assert (line 939) | function assert( fn ) {
function addHandle (line 961) | function addHandle( attrs, handler ) {
function siblingCheck (line 976) | function siblingCheck( a, b ) {
function createInputPseudo (line 1003) | function createInputPseudo( type ) {
function createButtonPseudo (line 1014) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1025) | function createPositionalPseudo( fn ) {
function testContext (line 1048) | function testContext( context ) {
function setFilters (line 2093) | function setFilters() {}
function toSelector (line 2164) | function toSelector( tokens ) {
function addCombinator (line 2174) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2232) | function elementMatcher( matchers ) {
function multipleContexts (line 2246) | function multipleContexts( selector, contexts, results ) {
function condense (line 2255) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2276) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2369) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2427) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2765) | function winnow( elements, qualifier, not ) {
function sibling (line 3078) | function sibling( cur, dir ) {
function createOptions (line 3159) | function createOptions( options ) {
function detach (line 3595) | function detach() {
function completed (line 3609) | function completed() {
function dataAttr (line 3779) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3813) | function isEmptyDataObject( obj ) {
function internalData (line 3829) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3921) | function internalRemoveData( elem, name, pvt ) {
function adjustCSS (line 4314) | function adjustCSS( elem, prop, valueParts, tween ) {
function createSafeFragment (line 4444) | function createSafeFragment( document ) {
function getAll (line 4548) | function getAll( context, tag ) {
function setGlobalEval (line 4577) | function setGlobalEval( elems, refElements ) {
function fixDefaultChecked (line 4593) | function fixDefaultChecked( elem ) {
function buildFragment (line 4599) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 4759) | function returnTrue() {
function returnFalse (line 4763) | function returnFalse() {
function safeActiveElement (line 4769) | function safeActiveElement() {
function on (line 4775) | function on( elem, types, selector, data, fn, one ) {
function manipulationTarget (line 5890) | function manipulationTarget( elem, content ) {
function disableScript (line 5900) | function disableScript( elem ) {
function restoreScript (line 5904) | function restoreScript( elem ) {
function cloneCopyEvent (line 5914) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5941) | function fixCloneNodeIssues( src, dest ) {
function domManip (line 6009) | function domManip( collection, args, callback, ignored ) {
function remove (line 6106) | function remove( elem, selector, keepData ) {
function actualDisplay (line 6442) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6458) | function defaultDisplay( nodeName ) {
function computeStyleTests (line 6607) | function computeStyleTests() {
function addGetHookIf (line 6819) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6862) | function vendorPropName( name ) {
function showHide (line 6881) | function showHide( elements, show ) {
function setPositiveNumber (line 6938) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6947) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6991) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 7374) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7498) | function createFxNow() {
function genFx (line 7506) | function genFx( type, includeWidth ) {
function createTween (line 7526) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7540) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7685) | function propFilter( props, specialEasing ) {
function Animation (line 7722) | function Animation( elem, properties, options ) {
function getClass (line 8803) | function getClass( elem ) {
function addToPrefiltersOrTransports (line 9115) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9149) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9178) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9198) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9255) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9753) | function done( status, nativeStatusText, responses, headers ) {
function getDisplay (line 9985) | function getDisplay( elem ) {
function filterHidden (line 9989) | function filterHidden( elem ) {
function buildParams (line 10027) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 10346) | function createStandardXHR() {
function createActiveXHR (line 10352) | function createActiveXHR() {
function getWindow (line 10682) | function getWindow( elem ) {
FILE: src/plugins/jquery-ui/jquery-ui.js
function _super (line 128) | function _super() {
function _superApply (line 132) | function _superApply( args ) {
function processClassString (line 512) | function processClassString( classes, checkOption ) {
function handlerProxy (line 595) | function handlerProxy() {
function handlerProxy (line 639) | function handlerProxy() {
function getOffsets (line 775) | function getOffsets( offsets, width, height ) {
function parseCss (line 782) | function parseCss( element, property ) {
function getDimensions (line 786) | function getDimensions( elem ) {
function clamp (line 1482) | function clamp( value, prop, allowEmpty ) {
function stringParse (line 1509) | function stringParse( string ) {
function hue2rgb (line 1763) | function hue2rgb( p, q, h ) {
function getElementStyles (line 2037) | function getElementStyles( elem ) {
function styleDifference (line 2065) | function styleDifference( oldStyle, newStyle ) {
function _normalizeArguments (line 2558) | function _normalizeArguments( effect, options, speed, callback ) {
function standardAnimationOption (line 2610) | function standardAnimationOption( option ) {
function run (line 2687) | function run( next ) {
function parseClip (line 2835) | function parseClip( str, element ) {
function childComplete (line 3219) | function childComplete() {
function animComplete (line 3269) | function animComplete() {
function visible (line 3929) | function visible( element ) {
function reduce (line 4057) | function reduce( elem, size, border, margin ) {
function datepicker_getZindex (line 7189) | function datepicker_getZindex( elem ) {
function Datepicker (line 7218) | function Datepicker() {
function datepicker_bindHover (line 9184) | function datepicker_bindHover( dpDiv ) {
function datepicker_handleMouseover (line 9198) | function datepicker_handleMouseover() {
function datepicker_extendRemove (line 9212) | function datepicker_extendRemove( target, props ) {
function checkFocus (line 12247) | function checkFocus() {
function filteredUi (line 12454) | function filteredUi( ui ) {
function filteredUi (line 12502) | function filteredUi( ui ) {
function isOverAxis (line 13099) | function isOverAxis( x, reference, size ) {
function addItems (line 15923) | function addItems() {
function delayEvent (line 16657) | function delayEvent( type, instance, container ) {
function spinnerModifer (line 16757) | function spinnerModifer( fn ) {
function checkFocus (line 16888) | function checkFocus() {
function constrain (line 17539) | function constrain() {
function complete (line 17926) | function complete() {
function show (line 17931) | function show() {
function position (line 18483) | function position( event ) {
FILE: src/plugins/jquery-validation/additional-methods.js
function stripHtml (line 21) | function stripHtml( value ) {
function isOdd (line 244) | function isOdd( n ) {
FILE: src/plugins/jquery-validation/jquery.validate.js
function handle (line 71) | function handle() {
function delegate (line 414) | function delegate( event ) {
FILE: src/plugins/jquery/core.js
function isArrayLike (line 381) | function isArrayLike( obj ) {
FILE: src/plugins/jquery/jquery.js
function DOMEval (line 98) | function DOMEval( code, node, doc ) {
function toType (line 128) | function toType( obj ) {
function isArrayLike (line 496) | function isArrayLike( obj ) {
function Sizzle (line 729) | function Sizzle( selector, context, results, seed ) {
function createCache (line 871) | function createCache() {
function markFunction (line 889) | function markFunction( fn ) {
function assert (line 898) | function assert( fn ) {
function addHandle (line 920) | function addHandle( attrs, handler ) {
function siblingCheck (line 935) | function siblingCheck( a, b ) {
function createInputPseudo (line 961) | function createInputPseudo( type ) {
function createButtonPseudo (line 972) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 983) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1039) | function createPositionalPseudo( fn ) {
function testContext (line 1062) | function testContext( context ) {
function setFilters (line 2150) | function setFilters() {}
function toSelector (line 2221) | function toSelector( tokens ) {
function addCombinator (line 2231) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2295) | function elementMatcher( matchers ) {
function multipleContexts (line 2309) | function multipleContexts( selector, contexts, results ) {
function condense (line 2318) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2339) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2432) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2490) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 2826) | function nodeName( elem, name ) {
function winnow (line 2836) | function winnow( elements, qualifier, not ) {
function sibling (line 3131) | function sibling( cur, dir ) {
function createOptions (line 3218) | function createOptions( options ) {
function Identity (line 3443) | function Identity( v ) {
function Thrower (line 3446) | function Thrower( ex ) {
function adoptValue (line 3450) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3543) | function resolve( depth, deferred, handler, special ) {
function completed (line 3908) | function completed() {
function fcamelCase (line 4003) | function fcamelCase( all, letter ) {
function camelCase (line 4010) | function camelCase( string ) {
function Data (line 4027) | function Data() {
function getData (line 4196) | function getData( data ) {
function dataAttr (line 4221) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4554) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4622) | function getDefaultDisplay( elem ) {
function showHide (line 4645) | function showHide( elements, show ) {
function getAll (line 4746) | function getAll( context, tag ) {
function setGlobalEval (line 4771) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 4787) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 4908) | function returnTrue() {
function returnFalse (line 4912) | function returnFalse() {
function expectSync (line 4922) | function expectSync( elem, type ) {
function safeActiveElement (line 4929) | function safeActiveElement() {
function on (line 4935) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5420) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5791) | function manipulationTarget( elem, content ) {
function disableScript (line 5802) | function disableScript( elem ) {
function restoreScript (line 5806) | function restoreScript( elem ) {
function cloneCopyEvent (line 5816) | function cloneCopyEvent( src, dest ) {
function fixInput (line 5851) | function fixInput( src, dest ) {
function domManip (line 5864) | function domManip( collection, args, callback, ignored ) {
function remove (line 5956) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6249) | function computeStyleTests() {
function roundPixelMeasures (line 6293) | function roundPixelMeasures( measure ) {
function curCSS (line 6338) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6391) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6416) | function vendorPropName( name ) {
function finalPropName (line 6431) | function finalPropName( name ) {
function setPositiveNumber (line 6457) | function setPositiveNumber( elem, value, subtract ) {
function boxModelAdjustment (line 6469) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6537) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 6904) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7027) | function schedule() {
function createFxNow (line 7040) | function createFxNow() {
function genFx (line 7048) | function genFx( type, includeWidth ) {
function createTween (line 7068) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7082) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7254) | function propFilter( props, specialEasing ) {
function Animation (line 7291) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8006) | function stripAndCollapse( value ) {
function getClass (line 8012) | function getClass( elem ) {
function classesToArray (line 8016) | function classesToArray( value ) {
function buildParams (line 8638) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 8792) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8826) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8855) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8875) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8933) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9448) | function done( status, nativeStatusText, responses, headers ) {
FILE: src/plugins/jquery/jquery.slim.js
function DOMEval (line 98) | function DOMEval( code, node, doc ) {
function toType (line 128) | function toType( obj ) {
function isArrayLike (line 496) | function isArrayLike( obj ) {
function Sizzle (line 729) | function Sizzle( selector, context, results, seed ) {
function createCache (line 871) | function createCache() {
function markFunction (line 889) | function markFunction( fn ) {
function assert (line 898) | function assert( fn ) {
function addHandle (line 920) | function addHandle( attrs, handler ) {
function siblingCheck (line 935) | function siblingCheck( a, b ) {
function createInputPseudo (line 961) | function createInputPseudo( type ) {
function createButtonPseudo (line 972) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 983) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1039) | function createPositionalPseudo( fn ) {
function testContext (line 1062) | function testContext( context ) {
function setFilters (line 2150) | function setFilters() {}
function toSelector (line 2221) | function toSelector( tokens ) {
function addCombinator (line 2231) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2295) | function elementMatcher( matchers ) {
function multipleContexts (line 2309) | function multipleContexts( selector, contexts, results ) {
function condense (line 2318) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2339) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2432) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2490) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 2826) | function nodeName( elem, name ) {
function winnow (line 2836) | function winnow( elements, qualifier, not ) {
function sibling (line 3131) | function sibling( cur, dir ) {
function createOptions (line 3218) | function createOptions( options ) {
function Identity (line 3443) | function Identity( v ) {
function Thrower (line 3446) | function Thrower( ex ) {
function adoptValue (line 3450) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3543) | function resolve( depth, deferred, handler, special ) {
function completed (line 3908) | function completed() {
function fcamelCase (line 4003) | function fcamelCase( all, letter ) {
function camelCase (line 4010) | function camelCase( string ) {
function Data (line 4027) | function Data() {
function getData (line 4196) | function getData( data ) {
function dataAttr (line 4221) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4554) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4622) | function getDefaultDisplay( elem ) {
function showHide (line 4645) | function showHide( elements, show ) {
function getAll (line 4746) | function getAll( context, tag ) {
function setGlobalEval (line 4771) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 4787) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 4908) | function returnTrue() {
function returnFalse (line 4912) | function returnFalse() {
function expectSync (line 4922) | function expectSync( elem, type ) {
function safeActiveElement (line 4929) | function safeActiveElement() {
function on (line 4935) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5420) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5791) | function manipulationTarget( elem, content ) {
function disableScript (line 5802) | function disableScript( elem ) {
function restoreScript (line 5806) | function restoreScript( elem ) {
function cloneCopyEvent (line 5816) | function cloneCopyEvent( src, dest ) {
function fixInput (line 5851) | function fixInput( src, dest ) {
function domManip (line 5864) | function domManip( collection, args, callback, ignored ) {
function remove (line 5956) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6249) | function computeStyleTests() {
function roundPixelMeasures (line 6293) | function roundPixelMeasures( measure ) {
function curCSS (line 6338) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6391) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6416) | function vendorPropName( name ) {
function finalPropName (line 6431) | function finalPropName( name ) {
function setPositiveNumber (line 6457) | function setPositiveNumber( elem, value, subtract ) {
function boxModelAdjustment (line 6469) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6537) | function getWidthOrHeight( elem, dimension, extra ) {
function stripAndCollapse (line 7213) | function stripAndCollapse( value ) {
function getClass (line 7219) | function getClass( elem ) {
function classesToArray (line 7223) | function classesToArray( value ) {
function buildParams (line 7817) | function buildParams( prefix, obj, traditional, add ) {
FILE: src/plugins/moment/locales.js
function plural (line 677) | function plural(word, num) {
function relativeTimeWithPlural (line 681) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function relativeTimeWithMutation (line 1135) | function relativeTimeWithMutation(number, withoutSuffix, key) {
function specialMutationForYears (line 1143) | function specialMutationForYears(number) {
function lastNumber (line 1155) | function lastNumber(number) {
function mutation (line 1161) | function mutation(text, number) {
function softMutation (line 1167) | function softMutation(text) {
function translate (line 1231) | function translate(number, withoutSuffix, key) {
function plural$1 (line 1454) | function plural$1(n) {
function translate$1 (line 1457) | function translate$1(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 1773) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function processRelativeTime$1 (line 1837) | function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
function processRelativeTime$2 (line 1901) | function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
function isFunction (line 2050) | function isFunction(input) {
function processRelativeTime$3 (line 2815) | function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
function translate$2 (line 3036) | function translate$2(number, withoutSuffix, key, isFuture) {
function verbalNumber (line 3072) | function verbalNumber(number, isFuture) {
function processRelativeTime$4 (line 3632) | function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
function translate$3 (line 4052) | function translate$3(number, withoutSuffix, key) {
function translate$4 (line 4195) | function translate$4(number, withoutSuffix, key, isFuture) {
function week (line 4225) | function week(isFuture) {
function plural$2 (line 4445) | function plural$2(n) {
function translate$5 (line 4453) | function translate$5(number, withoutSuffix, key, isFuture) {
function processRelativeTime$5 (line 5444) | function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
function processFutureTime (line 5454) | function processFutureTime(string) {
function processPastTime (line 5461) | function processPastTime(string) {
function eifelerRegelAppliesToNumber (line 5475) | function eifelerRegelAppliesToNumber(number) {
function translateSeconds (line 5639) | function translateSeconds(number, withoutSuffix, key, isFuture) {
function translateSingular (line 5646) | function translateSingular(number, withoutSuffix, key, isFuture) {
function special (line 5649) | function special(number) {
function forms (line 5652) | function forms(key) {
function translate$6 (line 5655) | function translate$6(number, withoutSuffix, key, isFuture) {
function format (line 5748) | function format(forms, number, withoutSuffix) {
function relativeTimeWithPlural$1 (line 5758) | function relativeTimeWithPlural$1(number, withoutSuffix, key) {
function relativeTimeWithSingular (line 5761) | function relativeTimeWithSingular(number, withoutSuffix, key) {
function relativeSeconds (line 5764) | function relativeSeconds(number, withoutSuffix) {
function translate$7 (line 6116) | function translate$7(number, withoutSuffix, key, isFuture) {
function relativeTimeMr (line 6233) | function relativeTimeMr(number, withoutSuffix, string, isFuture)
function plural$3 (line 7098) | function plural$3(n) {
function translate$8 (line 7101) | function translate$8(number, withoutSuffix, key) {
function relativeTimeWithPlural$2 (line 7312) | function relativeTimeWithPlural$2(number, withoutSuffix, key) {
function plural$4 (line 7375) | function plural$4(word, num) {
function relativeTimeWithPlural$3 (line 7379) | function relativeTimeWithPlural$3(number, withoutSuffix, key) {
function plural$5 (line 7740) | function plural$5(n) {
function translate$9 (line 7743) | function translate$9(number, withoutSuffix, key, isFuture) {
function processRelativeTime$6 (line 7882) | function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
function translateFuture (line 8937) | function translateFuture(output) {
function translatePast (line 8949) | function translatePast(output) {
function translate$a (line 8961) | function translate$a(number, withoutSuffix, string, isFuture) {
function numberAsNoun (line 8979) | function numberAsNoun(number) {
function processRelativeTime$7 (line 9186) | function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
function plural$6 (line 9405) | function plural$6(word, num) {
function relativeTimeWithPlural$4 (line 9409) | function relativeTimeWithPlural$4(number, withoutSuffix, key) {
function weekdaysCaseReplace (line 9428) | function weekdaysCaseReplace(m, format) {
function processHoursFunction (line 9449) | function processHoursFunction(str) {
FILE: src/plugins/moment/moment-with-locales.js
function hooks (line 9) | function hooks () {
function setHookCallback (line 15) | function setHookCallback (callback) {
function isArray (line 19) | function isArray(input) {
function isObject (line 23) | function isObject(input) {
function isObjectEmpty (line 29) | function isObjectEmpty(obj) {
function isUndefined (line 43) | function isUndefined(input) {
function isNumber (line 47) | function isNumber(input) {
function isDate (line 51) | function isDate(input) {
function map (line 55) | function map(arr, fn) {
function hasOwnProp (line 63) | function hasOwnProp(a, b) {
function extend (line 67) | function extend(a, b) {
function createUTC (line 85) | function createUTC (input, format, locale, strict) {
function defaultParsingFlags (line 89) | function defaultParsingFlags() {
function getParsingFlags (line 109) | function getParsingFlags(m) {
function isValid (line 134) | function isValid(m) {
function createInvalid (line 168) | function createInvalid (flags) {
function copyConfig (line 184) | function copyConfig(to, from) {
function Moment (line 234) | function Moment(config) {
function isMoment (line 249) | function isMoment (obj) {
function absFloor (line 253) | function absFloor (number) {
function toInt (line 262) | function toInt(argumentForCoercion) {
function compareArrays (line 274) | function compareArrays(array1, array2, dontConvert) {
function warn (line 288) | function warn(msg) {
function deprecate (line 295) | function deprecate(msg, fn) {
function deprecateSimple (line 327) | function deprecateSimple(name, msg) {
function isFunction (line 340) | function isFunction(input) {
function set (line 344) | function set (config) {
function mergeConfigs (line 363) | function mergeConfigs(parentConfig, childConfig) {
function Locale (line 389) | function Locale(config) {
function calendar (line 420) | function calendar (key, mom, now) {
function longDateFormat (line 434) | function longDateFormat (key) {
function invalidDate (line 451) | function invalidDate () {
function ordinal (line 458) | function ordinal (number) {
function relativeTime (line 479) | function relativeTime (number, withoutSuffix, string, isFuture) {
function pastFuture (line 486) | function pastFuture (diff, output) {
function addUnitAlias (line 493) | function addUnitAlias (unit, shorthand) {
function normalizeUnits (line 498) | function normalizeUnits(units) {
function normalizeObjectUnits (line 502) | function normalizeObjectUnits(inputObject) {
function addUnitPriority (line 521) | function addUnitPriority(unit, priority) {
function getPrioritizedUnits (line 525) | function getPrioritizedUnits(unitsObj) {
function zeroFill (line 536) | function zeroFill(number, targetLength, forceSign) {
function addFormatToken (line 556) | function addFormatToken (token, padded, ordinal, callback) {
function removeFormattingTokens (line 578) | function removeFormattingTokens(input) {
function makeFormatFunction (line 585) | function makeFormatFunction(format) {
function formatMoment (line 606) | function formatMoment(m, format) {
function expandFormat (line 617) | function expandFormat(format, locale) {
function addRegexToken (line 660) | function addRegexToken (token, regex, strictRegex) {
function getParseRegexForToken (line 666) | function getParseRegexForToken (token, config) {
function unescapeFormat (line 675) | function unescapeFormat(s) {
function regexEscape (line 681) | function regexEscape(s) {
function addParseToken (line 687) | function addParseToken (token, callback) {
function addWeekParseToken (line 702) | function addWeekParseToken (token, callback) {
function addTimeToArrayFromToken (line 709) | function addTimeToArrayFromToken(token, input, config) {
function daysInYear (line 769) | function daysInYear(year) {
function isLeapYear (line 773) | function isLeapYear(year) {
function getIsLeapYear (line 787) | function getIsLeapYear () {
function makeGetSet (line 791) | function makeGetSet (unit, keepTime) {
function get (line 803) | function get (mom, unit) {
function set$1 (line 808) | function set$1 (mom, unit, value) {
function stringGet (line 821) | function stringGet (units) {
function stringSet (line 830) | function stringSet (units, value) {
function mod (line 846) | function mod(n, x) {
function daysInMonth (line 867) | function daysInMonth(year, month) {
function localeMonths (line 927) | function localeMonths (m, format) {
function localeMonthsShort (line 937) | function localeMonthsShort (m, format) {
function handleStrictParse (line 946) | function handleStrictParse(monthName, format, strict) {
function localeMonthsParse (line 987) | function localeMonthsParse (monthName, format, strict) {
function setMonth (line 1027) | function setMonth (mom, value) {
function getSetMonth (line 1052) | function getSetMonth (value) {
function getDaysInMonth (line 1062) | function getDaysInMonth () {
function monthsShortRegex (line 1067) | function monthsShortRegex (isStrict) {
function monthsRegex (line 1087) | function monthsRegex (isStrict) {
function computeMonthsParse (line 1106) | function computeMonthsParse () {
function createDate (line 1140) | function createDate (y, m, d, h, M, s, ms) {
function createUTCDate (line 1158) | function createUTCDate (y) {
function firstWeekOffset (line 1177) | function firstWeekOffset(year, dow, doy) {
function dayOfYearFromWeeks (line 1187) | function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
function weekOfYear (line 1210) | function weekOfYear(mom, dow, doy) {
function weeksInYear (line 1232) | function weeksInYear(year, dow, doy) {
function localeWeek (line 1268) | function localeWeek (mom) {
function localeFirstDayOfWeek (line 1277) | function localeFirstDayOfWeek () {
function localeFirstDayOfYear (line 1281) | function localeFirstDayOfYear () {
function getSetWeek (line 1287) | function getSetWeek (input) {
function getSetISOWeek (line 1292) | function getSetISOWeek (input) {
function parseWeekday (line 1358) | function parseWeekday(input, locale) {
function parseIsoWeekday (line 1375) | function parseIsoWeekday(input, locale) {
function shiftWeekdays (line 1383) | function shiftWeekdays (ws, n) {
function localeWeekdays (line 1388) | function localeWeekdays (m, format) {
function localeWeekdaysShort (line 1396) | function localeWeekdaysShort (m) {
function localeWeekdaysMin (line 1402) | function localeWeekdaysMin (m) {
function handleStrictParse$1 (line 1407) | function handleStrictParse$1(weekdayName, format, strict) {
function localeWeekdaysParse (line 1471) | function localeWeekdaysParse (weekdayName, format, strict) {
function getSetDayOfWeek (line 1513) | function getSetDayOfWeek (input) {
function getSetLocaleDayOfWeek (line 1526) | function getSetLocaleDayOfWeek (input) {
function getSetISODayOfWeek (line 1534) | function getSetISODayOfWeek (input) {
function weekdaysRegex (line 1552) | function weekdaysRegex (isStrict) {
function weekdaysShortRegex (line 1572) | function weekdaysShortRegex (isStrict) {
function weekdaysMinRegex (line 1592) | function weekdaysMinRegex (isStrict) {
function computeWeekdaysParse (line 1612) | function computeWeekdaysParse () {
function hFormat (line 1655) | function hFormat() {
function kFormat (line 1659) | function kFormat() {
function meridiem (line 1685) | function meridiem (token, lowercase) {
function matchMeridiem (line 1703) | function matchMeridiem (isStrict, locale) {
function localeIsPM (line 1763) | function localeIsPM (input) {
function localeMeridiem (line 1770) | function localeMeridiem (hours, minutes, isLower) {
function normalizeLocale (line 1812) | function normalizeLocale(key) {
function chooseLocale (line 1819) | function chooseLocale(names) {
function loadLocale (line 1843) | function loadLocale(name) {
function getSetGlobalLocale (line 1861) | function getSetGlobalLocale (key, values) {
function defineLocale (line 1886) | function defineLocale (name, config) {
function updateLocale (line 1938) | function updateLocale(name, config) {
function getLocale (line 1967) | function getLocale (key) {
function listLocales (line 1990) | function listLocales() {
function checkOverflow (line 1994) | function checkOverflow (m) {
function defaults (line 2025) | function defaults(a, b, c) {
function currentDateArray (line 2035) | function currentDateArray(config) {
function configFromArray (line 2048) | function configFromArray (config) {
function dayOfYearFromWeekInfo (line 2117) | function dayOfYearFromWeekInfo(config) {
function configFromISO (line 2212) | function configFromISO(config) {
function extractFromRFC2822Strings (line 2267) | function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, m...
function untruncateYear (line 2283) | function untruncateYear(yearStr) {
function preprocessRFC2822 (line 2293) | function preprocessRFC2822(s) {
function checkWeekday (line 2298) | function checkWeekday(weekdayStr, parsedInput, config) {
function calculateOffset (line 2325) | function calculateOffset(obsOffset, militaryOffset, numOffset) {
function configFromRFC2822 (line 2339) | function configFromRFC2822(config) {
function configFromString (line 2360) | function configFromString(config) {
function configFromStringAndFormat (line 2403) | function configFromStringAndFormat(config) {
function meridiemFixWrap (line 2475) | function meridiemFixWrap (locale, hour, meridiem) {
function configFromStringAndArray (line 2501) | function configFromStringAndArray(config) {
function configFromObject (line 2545) | function configFromObject(config) {
function createFromConfig (line 2558) | function createFromConfig (config) {
function prepareConfig (line 2569) | function prepareConfig (config) {
function configFromInput (line 2602) | function configFromInput(config) {
function createLocalOrUTC (line 2625) | function createLocalOrUTC (input, format, locale, strict, isUTC) {
function createLocal (line 2649) | function createLocal (input, format, locale, strict) {
function pickBy (line 2682) | function pickBy(fn, moments) {
function min (line 2700) | function min () {
function max (line 2706) | function max () {
function isDurationValid (line 2718) | function isDurationValid(m) {
function isValid$1 (line 2740) | function isValid$1() {
function createInvalid$1 (line 2744) | function createInvalid$1() {
function Duration (line 2748) | function Duration (duration) {
function isDuration (line 2785) | function isDuration (obj) {
function absRound (line 2789) | function absRound (number) {
function offset (line 2799) | function offset (token, separator) {
function offsetFromString (line 2830) | function offsetFromString(matcher, string) {
function cloneWithOffset (line 2847) | function cloneWithOffset(input, model) {
function getDateOffset (line 2861) | function getDateOffset (m) {
function getSetOffset (line 2885) | function getSetOffset (input, keepLocalTime, keepMinutes) {
function getSetZone (line 2923) | function getSetZone (input, keepLocalTime) {
function setOffsetToUTC (line 2937) | function setOffsetToUTC (keepLocalTime) {
function setOffsetToLocal (line 2941) | function setOffsetToLocal (keepLocalTime) {
function setOffsetToParsedOffset (line 2953) | function setOffsetToParsedOffset () {
function hasAlignedHourOffset (line 2968) | function hasAlignedHourOffset (input) {
function isDaylightSavingTime (line 2977) | function isDaylightSavingTime () {
function isDaylightSavingTimeShifted (line 2984) | function isDaylightSavingTimeShifted () {
function isLocal (line 3005) | function isLocal () {
function isUtcOffset (line 3009) | function isUtcOffset () {
function isUtc (line 3013) | function isUtc () {
function createDuration (line 3025) | function createDuration (input, key) {
function parseIso (line 3089) | function parseIso (inp, sign) {
function positiveMomentsDifference (line 3098) | function positiveMomentsDifference(base, other) {
function momentsDifference (line 3112) | function momentsDifference(base, other) {
function createAdder (line 3131) | function createAdder(direction, name) {
function addSubtract (line 3148) | function addSubtract (mom, duration, isAdding, updateOffset) {
function getCalendarFormat (line 3177) | function getCalendarFormat(myMoment, now) {
function calendar$1 (line 3187) | function calendar$1 (time, formats) {
function clone (line 3199) | function clone () {
function isAfter (line 3203) | function isAfter (input, units) {
function isBefore (line 3216) | function isBefore (input, units) {
function isBetween (line 3229) | function isBetween (from, to, units, inclusivity) {
function isSame (line 3240) | function isSame (input, units) {
function isSameOrAfter (line 3255) | function isSameOrAfter (input, units) {
function isSameOrBefore (line 3259) | function isSameOrBefore (input, units) {
function diff (line 3263) | function diff (input, units, asFloat) {
function monthDiff (line 3297) | function monthDiff (a, b) {
function toString (line 3321) | function toString () {
function toISOString (line 3325) | function toISOString(keepOffset) {
function inspect (line 3351) | function inspect () {
function format (line 3369) | function format (inputString) {
function from (line 3377) | function from (time, withoutSuffix) {
function fromNow (line 3387) | function fromNow (withoutSuffix) {
function to (line 3391) | function to (time, withoutSuffix) {
function toNow (line 3401) | function toNow (withoutSuffix) {
function locale (line 3408) | function locale (key) {
function localeData (line 3433) | function localeData () {
function mod$1 (line 3443) | function mod$1(dividend, divisor) {
function localStartOfDate (line 3447) | function localStartOfDate(y, m, d) {
function utcStartOfDate (line 3457) | function utcStartOfDate(y, m, d) {
function startOf (line 3467) | function startOf (units) {
function endOf (line 3515) | function endOf (units) {
function valueOf (line 3563) | function valueOf () {
function unix (line 3567) | function unix () {
function toDate (line 3571) | function toDate () {
function toArray (line 3575) | function toArray () {
function toObject (line 3580) | function toObject () {
function toJSON (line 3593) | function toJSON () {
function isValid$2 (line 3598) | function isValid$2 () {
function parsingFlags (line 3602) | function parsingFlags () {
function invalidAt (line 3606) | function invalidAt () {
function creationData (line 3610) | function creationData() {
function addWeekYearFormatToken (line 3630) | function addWeekYearFormatToken (token, getter) {
function getSetWeekYear (line 3671) | function getSetWeekYear (input) {
function getSetISOWeekYear (line 3680) | function getSetISOWeekYear (input) {
function getISOWeeksInYear (line 3685) | function getISOWeeksInYear () {
function getWeeksInYear (line 3689) | function getWeeksInYear () {
function getSetWeekYearHelper (line 3694) | function getSetWeekYearHelper(input, week, weekday, dow, doy) {
function setWeekAll (line 3707) | function setWeekAll(weekYear, week, weekday, dow, doy) {
function getSetQuarter (line 3738) | function getSetQuarter (input) {
function getSetDayOfYear (line 3796) | function getSetDayOfYear (input) {
function parseMs (line 3895) | function parseMs(input, array) {
function getZoneAbbr (line 3913) | function getZoneAbbr () {
function getZoneName (line 3917) | function getZoneName () {
function createUnix (line 3999) | function createUnix (input) {
function createInZone (line 4003) | function createInZone () {
function preParsePostFormat (line 4007) | function preParsePostFormat (string) {
function get$1 (line 4044) | function get$1 (format, index, field, setter) {
function listMonthsImpl (line 4050) | function listMonthsImpl (format, index, field) {
function listWeekdaysImpl (line 4078) | function listWeekdaysImpl (localeSorted, format, index, field) {
function listMonths (line 4114) | function listMonths (format, index) {
function listMonthsShort (line 4118) | function listMonthsShort (format, index) {
function listWeekdays (line 4122) | function listWeekdays (localeSorted, format, index) {
function listWeekdaysShort (line 4126) | function listWeekdaysShort (localeSorted, format, index) {
function listWeekdaysMin (line 4130) | function listWeekdaysMin (localeSorted, format, index) {
function abs (line 4153) | function abs () {
function addSubtract$1 (line 4170) | function addSubtract$1 (duration, input, value, direction) {
function add$1 (line 4181) | function add$1 (input, value) {
function subtract$1 (line 4186) | function subtract$1 (input, value) {
function absCeil (line 4190) | function absCeil (number) {
function bubble (line 4198) | function bubble () {
function daysToMonths (line 4245) | function daysToMonths (days) {
function monthsToDays (line 4251) | function monthsToDays (months) {
function as (line 4256) | function as (units) {
function valueOf$1 (line 4291) | function valueOf$1 () {
function makeAs (line 4303) | function makeAs (alias) {
function clone$1 (line 4319) | function clone$1 () {
function get$2 (line 4323) | function get$2 (units) {
function makeGetter (line 4328) | function makeGetter(name) {
function weeks (line 4342) | function weeks () {
function substituteTimeAgo (line 4357) | function substituteTimeAgo(string, number, withoutSuffix, isFuture, loca...
function relativeTime$1 (line 4361) | function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
function getSetRelativeTimeRounding (line 4389) | function getSetRelativeTimeRounding (roundingFunction) {
function getSetRelativeTimeThreshold (line 4401) | function getSetRelativeTimeThreshold (threshold, limit) {
function humanize (line 4415) | function humanize (withSuffix) {
function sign (line 4432) | function sign(x) {
function toISOString$1 (line 4436) | function toISOString$1() {
function plural (line 5268) | function plural(word, num) {
function relativeTimeWithPlural (line 5272) | function relativeTimeWithPlural(number, withoutSuffix, key) {
function relativeTimeWithMutation (line 5726) | function relativeTimeWithMutation(number, withoutSuffix, key) {
function specialMutationForYears (line 5734) | function specialMutationForYears(number) {
function lastNumber (line 5746) | function lastNumber(number) {
function mutation (line 5752) | function mutation(text, number) {
function softMutation (line 5758) | function softMutation(text) {
function translate (line 5822) | function translate(number, withoutSuffix, key) {
function plural$1 (line 6045) | function plural$1(n) {
function translate$1 (line 6048) | function translate$1(number, withoutSuffix, key, isFuture) {
function processRelativeTime (line 6364) | function processRelativeTime(number, withoutSuffix, key, isFuture) {
function processRelativeTime$1 (line 6428) | function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
function processRelativeTime$2 (line 6492) | function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
function processRelativeTime$3 (line 7402) | function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
function translate$2 (line 7623) | function translate$2(number, withoutSuffix, key, isFuture) {
function verbalNumber (line 7659) | function verbalNumber(number, isFuture) {
function processRelativeTime$4 (line 8219) | function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
function translate$3 (line 8639) | function translate$3(number, withoutSuffix, key) {
function translate$4 (line 8782) | function translate$4(number, withoutSuffix, key, isFuture) {
function week (line 8812) | function week(isFuture) {
function plural$2 (line 9032) | function plural$2(n) {
function translate$5 (line 9040) | function translate$5(number, withoutSuffix, key, isFuture) {
function processRelativeTime$5 (line 10031) | function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
function processFutureTime (line 10041) | function processFutureTime(string) {
function processPastTime (line 10048) | function processPastTime(string) {
function eifelerRegelAppliesToNumber (line 10062) | function eifelerRegelAppliesToNumber(number) {
function translateSeconds (line 10226) | function translateSeconds(number, withoutSuffix, key, isFuture) {
function translateSingular (line 10233) | function translateSingular(number, withoutSuffix, key, isFuture) {
function special (line 10236) | function special(number) {
function forms (line 10239) | function forms(key) {
function translate$6 (line 10242) | function translate$6(number, withoutSuffix, key, isFuture) {
function format$1 (line 10335) | function format$1(forms, number, withoutSuffix) {
function relativeTimeWithPlural$1 (line 10345) | function relativeTimeWithPlural$1(number, withoutSuffix, key) {
function relativeTimeWithSingular (line 10348) | function relativeTimeWithSingular(number, withoutSuffix, key) {
function relativeSeconds (line 10351) | function relativeSeconds(number, withoutSuffix) {
function translate$7 (line 10703) | function translate$7(number, withoutSuffix, key, isFuture) {
function relativeTimeMr (line 10820) | function relativeTimeMr(number, withoutSuffix, string, isFuture)
function plural$3 (line 11685) | function plural$3(n) {
function translate$8 (line 11688) | function translate$8(number, withoutSuffix, key) {
function relativeTimeWithPlural$2 (line 11899) | function relativeTimeWithPlural$2(number, withoutSuffix, key) {
function plural$4 (line 11962) | function plural$4(word, num) {
function relativeTimeWithPlural$3 (line 11966) | function relativeTimeWithPlural$3(number, withoutSuffix, key) {
function plural$5 (line 12327) | function plural$5(n) {
function translate$9 (line 12330) | function translate$9(number, withoutSuffix, key, isFuture) {
function processRelativeTime$6 (line 12469) | function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
function translateFuture (line 13524) | function translateFuture(output) {
function translatePast (line 13536) | function translatePast(output) {
function translate$a (line 13548) | function translate$a(number, withoutSuffix, string, isFuture) {
function numberAsNoun (line 13566) | function numberAsNoun(number) {
function processRelativeTime$7 (line 13773) | function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
function plural$6 (line 13992) | function plural$6(word, num) {
function relativeTimeWithPlural$4 (line 13996) | function relativeTimeWithPlural$4(number, withoutSuffix, key) {
function weekdaysCaseReplace (line 14015) | function weekdaysCaseReplace(m, format) {
function processHoursFunction (line 14036) | function processHoursFunction(str) {
FILE: src/plugins/overlayScrollbars/js/OverlayScrollbars.js
function firstLetterToUpper (line 61) | function firstLetterToUpper(str) {
function windowSize (line 116) | function windowSize(x) {
function bind (line 119) | function bind(func, thisObj) {
function extend (line 531) | function extend() {
function inArray (line 594) | function inArray(item, arr, fromIndex) {
function isFunction (line 601) | function isFunction(obj) {
function isEmptyObject (line 605) | function isEmptyObject(obj) {
function isPlainObject (line 611) | function isPlainObject(obj) {
function each (line 631) | function each(obj, callback) {
function isArrayLike (line 650) | function isArrayLike(obj) {
function stripAndCollapse (line 656) | function stripAndCollapse(value) {
function matches (line 661) | function matches(elem, selector) {
function insertAdjacentElement (line 672) | function insertAdjacentElement(el, strategy, child) {
function setCSSVal (line 683) | function setCSSVal(el, prop, val) {
function parseCSSVal (line 690) | function parseCSSVal(prop, val) {
function startNextAnimationInQ (line 696) | function startNextAnimationInQ(animObj, removeFromQ) {
function setAnimationValue (line 712) | function setAnimationValue(el, prop, value) {
function animate (line 719) | function animate(el, props, options, easing, complete, guaranteedNext) {
function stop (line 854) | function stop(el, clearQ, jumpToEnd) {
function elementIsVisible (line 882) | function elementIsVisible(el) {
function FakejQuery (line 886) | function FakejQuery(selector) {
function initOverlayScrollbarsStatics (line 1681) | function initOverlayScrollbarsStatics() {
function OverlayScrollbarsGlobals (line 1693) | function OverlayScrollbarsGlobals(defaultOptions) {
function OverlayScrollbarsAutoUpdateLoop (line 1907) | function OverlayScrollbarsAutoUpdateLoop(globals) {
function OverlayScrollbarsInstance (line 2016) | function OverlayScrollbarsInstance(pluginTargetElement, options, extensi...
FILE: src/plugins/overlayScrollbars/js/jquery.overlayScrollbars.js
function firstLetterToUpper (line 61) | function firstLetterToUpper(str) {
function windowSize (line 116) | function windowSize(x) {
function bind (line 119) | function bind(func, thisObj) {
function initOverlayScrollbarsStatics (line 599) | function initOverlayScrollbarsStatics() {
function OverlayScrollbarsGlobals (line 611) | function OverlayScrollbarsGlobals(defaultOptions) {
function OverlayScrollbarsAutoUpdateLoop (line 825) | function OverlayScrollbarsAutoUpdateLoop(globals) {
function OverlayScrollbarsInstance (line 934) | function OverlayScrollbarsInstance(pluginTargetElement, options, extensi...
Condensed preview — 126 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,605K chars).
[
{
"path": ".dockerignore",
"chars": 56,
"preview": "# Exclude specific directories\nsrc/install/\nsrc/upgrade/"
},
{
"path": ".gitignore",
"chars": 34,
"preview": ".settings\n.project\n.idea\n.DS_Store"
},
{
"path": "Dockerfile",
"chars": 3420,
"preview": "FROM php:8.3\n\nRUN if [ \"$(grep '^VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '\"')\" -eq \"9\" ]; then \\\n "
},
{
"path": "LICENSE",
"chars": 1075,
"preview": "MIT License\n\nCopyright (c) 2020 Giandonato Inverso\n\nPermission is hereby granted, free of charge, to any person obtainin"
},
{
"path": "README.md",
"chars": 2260,
"preview": "<p align=\"center\"><img src=\"https://www.giandonatoinverso.it/qrcode/dist/img/DynamicQRCode_Original.png\"></p>\n\n**PHP Dyn"
},
{
"path": "docker-compose.yml",
"chars": 1276,
"preview": "version: \"3.2\"\nservices:\n php-dynamic-qrcode:\n image: \"giandonatoinverso/php-dynamic-qr-code:latest\"\n restart: \"u"
},
{
"path": "documentation/assets/custom.js",
"chars": 7754,
"preview": "/* ================================== SCROLL ============================== */\n$(function() {\n $('a.page-scroll').bin"
},
{
"path": "documentation/assets/run_prettify.css",
"chars": 1418,
"preview": "/*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */\n.pr"
},
{
"path": "documentation/assets/run_prettify.js",
"chars": 81562,
"preview": "/**\n * @license\n * Copyright (C) 2013 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "documentation/assets/style.css",
"chars": 10339,
"preview": "body,\nh3 {\n\tfont-size: 14px\n}\n\n*,\nh3,\nol li {\n\tpadding: 0\n}\n\n.mainpanel ul li a,\nh3,\nol li {\n\tcolor: #a1b1c1\n}\n\n* {\n\tmar"
},
{
"path": "documentation/index.html",
"chars": 18233,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
},
{
"path": "src/authenticate.php",
"chars": 1706,
"preview": "<?php\n\n\nrequire_once 'config/config.php';\nsession_start();\n\nif ($_SERVER['REQUEST_METHOD'] === 'POST')\n{\n\t$username = fi"
},
{
"path": "src/bulk_action.php",
"chars": 2966,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH . '/lib/DynamicQrcode/DynamicQrcode.php'"
},
{
"path": "src/config/config.php",
"chars": 1317,
"preview": "<?php\n//Note: This file should be included first in every php page.\nrequire_once ('environment.php');\n\nerror_reporting(E"
},
{
"path": "src/config/environment.php",
"chars": 973,
"preview": "<?php\n/*\n|--------------------------------------------------------------------------\n| UNIFIED ENVIRONMENT CONFIGURATION"
},
{
"path": "src/dist/css/adminlte.css",
"chars": 792068,
"preview": "/*!\n * AdminLTE v3.0.5\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.io>\n * License: Open source "
},
{
"path": "src/dist/css/alt/adminlte.components.css",
"chars": 143462,
"preview": "/*!\n * AdminLTE v3.0.5\n * Only Components\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.io>\n * "
},
{
"path": "src/dist/css/alt/adminlte.core.css",
"chars": 395355,
"preview": "/*!\n * AdminLTE v3.0.5\n * Only Core\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.io>\n * Lice"
},
{
"path": "src/dist/css/alt/adminlte.extra-components.css",
"chars": 21523,
"preview": "/*!\n * AdminLTE v3.0.5\n * Only Extra Components\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.i"
},
{
"path": "src/dist/css/alt/adminlte.pages.css",
"chars": 7591,
"preview": "/*!\n * AdminLTE v3.0.5\n * Only Pages\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.io>\n * Lic"
},
{
"path": "src/dist/css/alt/adminlte.plugins.css",
"chars": 199997,
"preview": "/*!\n * AdminLTE v3.0.5\n * Only Plugins\n * Author: Colorlib\n * Website: AdminLTE.io <http://adminlte.io>\n * L"
},
{
"path": "src/dist/css/custom.css",
"chars": 95,
"preview": "\n\n.bulk-action-wrapper {\n padding: 10px 0;\n}\n#err-msg {\n display: none;\n color: red;\n}"
},
{
"path": "src/dist/js/adminlte.js",
"chars": 57882,
"preview": "/*!\n * AdminLTE v3.0.5 (https://adminlte.io)\n * Copyright 2014-2020 Colorlib <http://colorlib.com>\n * Licensed under MIT"
},
{
"path": "src/dist/js/custom.js",
"chars": 14602,
"preview": "/**\n * AdminLTE Demo Menu\n * ------------------\n */\n(function ($) {\n 'use strict'\n\n var $sidebar = $('.control-sideb"
},
{
"path": "src/dynamic_qrcode.php",
"chars": 4243,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH.'/includes/auth_validate.php';\nrequire_o"
},
{
"path": "src/dynamic_qrcodes.php",
"chars": 2797,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH . '/includes/auth_validate.php';\nrequire"
},
{
"path": "src/forms/filters.php",
"chars": 1907,
"preview": "<div class=\"content-header\" style=\"margin-left: -18px\">\n\t<div class=\"container-fluid\">\n\t\t<div class=\"row\">\n\t\t\t<div class"
},
{
"path": "src/forms/form_dynamic_add.php",
"chars": 5006,
"preview": "<fieldset>\n <div class=\"col-sm-12 mb-2\">\n <div class=\"row\">\n <div class=\"col-6 col-md-3\">\n "
},
{
"path": "src/forms/form_dynamic_edit.php",
"chars": 3264,
"preview": "<fieldset>\n <div class=\"col-sm-4\">\n <div class=\"form-group\">\n <label for=\"identifier\">Redirect iden"
},
{
"path": "src/forms/form_static_add.php",
"chars": 7236,
"preview": "<fieldset>\n <div class=\"card card-primary card-outline card-outline-tabs\">\n <div class=\"card-header p-0 bo"
},
{
"path": "src/forms/form_static_edit.php",
"chars": 1961,
"preview": "<fieldset>\n\n <div class=\"col-sm-4\">\n <div class=\"form-group\">\n <label for=\"filename\">Filename *</la"
},
{
"path": "src/forms/form_users.php",
"chars": 1944,
"preview": "<fieldset>\n <div class=\"col-sm-4\">\n <div class=\"form-group\">\n <label for=\"username\">Username *</lab"
},
{
"path": "src/forms/logo.php",
"chars": 22,
"preview": "<!-- code for logo -->"
},
{
"path": "src/forms/qrcode_options.php",
"chars": 4684,
"preview": "<div class=\"col-sm-12 mb-2\">\n <div class=\"row\">\n <div class=\"col-6 col-md-3\">\n <label f"
},
{
"path": "src/forms/static/2fa.php",
"chars": 1494,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=2fa\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/bitcoin.php",
"chars": 1760,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=bitcoin\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">"
},
{
"path": "src/forms/static/bookmark.php",
"chars": 974,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=bookmark\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\""
},
{
"path": "src/forms/static/country-code.html",
"chars": 15037,
"preview": "<option data-countryCode=\"US\" value=\"1\" Selected>USA (+1)</option>\n<option data-countryCode=\"GB\" value=\"44\">UK (+44)</op"
},
{
"path": "src/forms/static/email.php",
"chars": 1172,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=email\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/event.php",
"chars": 2822,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=event\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/location.php",
"chars": 897,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=location\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\""
},
{
"path": "src/forms/static/paypal.php",
"chars": 3801,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=paypal\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n"
},
{
"path": "src/forms/static/phone.php",
"chars": 1026,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=phone\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/skype.php",
"chars": 657,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=skype\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/sms.php",
"chars": 1247,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=sms\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/text.php",
"chars": 651,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=text\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/timezones.html",
"chars": 28718,
"preview": "<optgroup label=\"Africa\">\n <option value=\"Africa/Abidjan\">Africa/Abidjan</option>\n <option value=\"Africa/Accra\">Af"
},
{
"path": "src/forms/static/vcard.php",
"chars": 4436,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=vcard\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/static/whatsapp.php",
"chars": 1252,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=whatsapp\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\""
},
{
"path": "src/forms/static/wifi.php",
"chars": 1312,
"preview": "<form class=\"form\" action=\"static_qrcode.php?type=wifi\" method=\"post\" id=\"static_form\" enctype=\"multipart/form-data\">\n "
},
{
"path": "src/forms/table_dynamic.php",
"chars": 6424,
"preview": "<div class=\"row\">\n <div class=\"col-12\" id=\"bulk-action-div\" style=\"display: none;\">\n <div id=\"err-msg\"></div>\n"
},
{
"path": "src/forms/table_static.php",
"chars": 6029,
"preview": "<div class=\"row\">\n <div class=\"col-12\" id=\"bulk-action-div\" style=\"display: none;\">\n <div id=\"err-msg\"></div>\n"
},
{
"path": "src/forms/table_users.php",
"chars": 3107,
"preview": "<div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card\">\n <div class=\"card-body table-responsive"
},
{
"path": "src/helpers/helpers.php",
"chars": 3331,
"preview": "<?php\n/**\n * Function to generate random string.\n * The function takes an integer n as input and generates a string by c"
},
{
"path": "src/includes/auth_validate.php",
"chars": 217,
"preview": "<?php\n\n//If User is logged in the session['user_logged_in'] will be set to true\n\n//if user is Not Logged in, redirect to"
},
{
"path": "src/includes/flash_messages.php",
"chars": 1773,
"preview": "<?php\nif(isset($_SESSION['success']))\n{\n\necho '\n<section class=\"content\">\n <div class=\"container-fluid\">\n <div class"
},
{
"path": "src/includes/footer.php",
"chars": 1184,
"preview": "<!-- Control Sidebar -->\n <aside class=\"control-sidebar control-sidebar-dark\">\n <!-- Control sidebar content goes he"
},
{
"path": "src/includes/head.php",
"chars": 1038,
"preview": "<meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <meta http-equiv=\"x-ua-c"
},
{
"path": "src/includes/navbar.php",
"chars": 1346,
"preview": "\n <nav class=\"main-header navbar navbar-expand navbar-white navbar-light\">\n <!-- Left navbar links -->\n <ul class"
},
{
"path": "src/includes/search_order.php",
"chars": 812,
"preview": "<?php\nrequire_once BASE_PATH . '/config/config.php';\n\n// Get Input data from query string\n$order_by\t= filter_input(INPUT"
},
{
"path": "src/includes/sidebar.php",
"chars": 4667,
"preview": "\n <aside class=\"main-sidebar sidebar-dark-primary elevation-4\">\n <!-- Brand Logo -->\n <a href=\"./index.php\" class"
},
{
"path": "src/index.php",
"chars": 21024,
"preview": "<?php\n//Use httponly flag\nini_set('session.cookie_httponly', 1);\n\n//Use only cookies\nini_set('session.use_only_cookies',"
},
{
"path": "src/lib/DynamicQrcode/DynamicQrcode.php",
"chars": 4464,
"preview": "<?php\nrequire_once 'config/config.php';\n\nif (QRCODE_GENERATOR === \"external-api.qrserver.com\") {\n require_once BASE_P"
},
{
"path": "src/lib/ICS/ICS.php",
"chars": 4738,
"preview": "<?php\n\n/**\n * This is free and unencumbered software released into the public domain.\n * \n * Anyone is free to copy, mod"
},
{
"path": "src/lib/MysqliDb/MysqliDb.php",
"chars": 74004,
"preview": "<?php\n/**\n * MysqliDb Class\n *\n * @category Database Access\n * @package MysqliDb\n * @author Jeffery Way <jeffrey@j"
},
{
"path": "src/lib/Qrcode/Qrcode-intchil.php",
"chars": 15850,
"preview": "<?php\nrequire_once 'config/config.php';\nuse chillerlan\\QRCode\\Common\\EccLevel;\nuse chillerlan\\QRCode\\Common\\Version;\nuse"
},
{
"path": "src/lib/Qrcode/Qrcode.php",
"chars": 7731,
"preview": "<?php\nrequire_once 'config/config.php';\n\nclass Qrcode {\n private string $table;\n private string $redirect_url;\n\n "
},
{
"path": "src/lib/StaticQrcode/StaticQrcode.php",
"chars": 17399,
"preview": "<?php\nrequire_once 'config/config.php';\nrequire_once BASE_PATH . '/lib/ICS/ICS.php';\nrequire_once BASE_PATH . '/lib/vCar"
},
{
"path": "src/lib/Users/Users.php",
"chars": 3610,
"preview": "<?php\nrequire_once 'config/config.php';\n\nclass Users\n{\n /**\n *\n */\n public function __construct()\n {\n "
},
{
"path": "src/lib/vCard/vCard.php",
"chars": 4703,
"preview": "<?php\n/**\n * @title QR Code\n * @desc Compatible to vCard 4.0 or higher.\n *\n * @author P"
},
{
"path": "src/login.php",
"chars": 3877,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\n$token = bin2hex(openssl_random_pseudo_bytes(16));\n\n// If User "
},
{
"path": "src/logout.php",
"chars": 214,
"preview": "<?php\nrequire_once './config/config.php';\nsession_start();\nsession_destroy();\n\n\nif(isset($_COOKIE['series_id']) && isset"
},
{
"path": "src/plugins/bootstrap/js/bootstrap.bundle.js",
"chars": 227978,
"preview": "/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/t"
},
{
"path": "src/plugins/bootstrap/js/bootstrap.js",
"chars": 135079,
"preview": "/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/t"
},
{
"path": "src/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css",
"chars": 11601,
"preview": "/*!\n * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.\n * @package boots"
},
{
"path": "src/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js",
"chars": 163728,
"preview": "/*!\n * Bootstrap Colorpicker - Bootstrap Colorpicker is a modular color picker plugin for Bootstrap 4.\n * @package boots"
},
{
"path": "src/plugins/chart.js/Chart.bundle.js",
"chars": 578945,
"preview": "/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n *"
},
{
"path": "src/plugins/chart.js/Chart.css",
"chars": 811,
"preview": "/*\n * DOM element rendering detection\n * https://davidwalsh.name/detect-node-insertion\n */\n@keyframes chartjs-render-ani"
},
{
"path": "src/plugins/chart.js/Chart.js",
"chars": 428067,
"preview": "/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n *"
},
{
"path": "src/plugins/daterangepicker/bower.json",
"chars": 314,
"preview": "{\n \"name\": \"daterangepicker\",\n \"main\": [\n \"daterangepicker.js\",\n \"daterangepicker.css\"\n ],\n \"ignore\": [\n \"*"
},
{
"path": "src/plugins/daterangepicker/daterangepicker.css",
"chars": 7659,
"preview": ".daterangepicker {\n position: absolute;\n color: inherit;\n background-color: #fff;\n border-radius: 4px;\n border: 1px"
},
{
"path": "src/plugins/daterangepicker/daterangepicker.js",
"chars": 65703,
"preview": "/**\n* @version: 3.0.5\n* @author: Dan Grossman http://www.dangrossman.info/\n* @copyright: Copyright (c) 2012-2019 Dan Gro"
},
{
"path": "src/plugins/daterangepicker/example/amd/index.html",
"chars": 6953,
"preview": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en-US\">\n <head>\n <meta charset=\"UTF-8\" />\n <title>A date range picker "
},
{
"path": "src/plugins/daterangepicker/example/amd/main.js",
"chars": 4636,
"preview": "requirejs.config({\n \"paths\": {\n \"jquery\": \"https://code.jquery.com/jquery-1.11.3.min\",\n \"moment\": \"../../mo"
},
{
"path": "src/plugins/daterangepicker/example/amd/require.js",
"chars": 15924,
"preview": "/*\n RequireJS 2.2.0 Copyright jQuery Foundation and other contributors.\n Released under MIT license, http://github.com/r"
},
{
"path": "src/plugins/daterangepicker/example/browserify/README.md",
"chars": 180,
"preview": "# Browserify example\n\nTwo steps need to be done for this to work\n\nIn the project root\n\n npm install\n\nIn this folder\n\n"
},
{
"path": "src/plugins/daterangepicker/example/browserify/bundle.js",
"chars": 6,
"preview": "nocode"
},
{
"path": "src/plugins/daterangepicker/example/browserify/index.html",
"chars": 6931,
"preview": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en-US\">\n <head>\n <meta charset=\"UTF-8\" />\n <title>A date range picker "
},
{
"path": "src/plugins/daterangepicker/example/browserify/main.js",
"chars": 4467,
"preview": "require('../../daterangepicker.js');\nvar $ = require('jquery'),\n moment = require('moment');\n\n$(document).ready(funct"
},
{
"path": "src/plugins/daterangepicker/package.js",
"chars": 484,
"preview": "Package.describe({\n name: 'dangrossman:bootstrap-daterangepicker',\n version: '3.0.5',\n summary: 'Date range picker co"
},
{
"path": "src/plugins/daterangepicker/website/index.html",
"chars": 42665,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width"
},
{
"path": "src/plugins/daterangepicker/website/website.css",
"chars": 2082,
"preview": "body {\n font-size: 15px;\n line-height: 1.6em;\n position: relative;\n margin: 0;\n}\n\n.navbar .nav-item {\n pa"
},
{
"path": "src/plugins/daterangepicker/website/website.js",
"chars": 6466,
"preview": "$(document).ready(function() {\n\n $('#config-text').keyup(function() {\n eval($(this).val());\n });\n \n $('"
},
{
"path": "src/plugins/daterangepicker/website.css",
"chars": 2082,
"preview": "body {\n font-size: 15px;\n line-height: 1.6em;\n position: relative;\n margin: 0;\n}\n\n.navbar .nav-item {\n pa"
},
{
"path": "src/plugins/daterangepicker/website.js",
"chars": 6466,
"preview": "$(document).ready(function() {\n\n $('#config-text').keyup(function() {\n eval($(this).val());\n });\n \n $('"
},
{
"path": "src/plugins/fontawesome-free/css/all.css",
"chars": 72670,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/fontawesome-free/css/brands.css",
"chars": 732,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/fontawesome-free/css/fontawesome.css",
"chars": 71035,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/fontawesome-free/css/regular.css",
"chars": 734,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/fontawesome-free/css/solid.css",
"chars": 727,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/fontawesome-free/css/svg-with-js.css",
"chars": 8077,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/fontawesome-free/css/v4-shims.css",
"chars": 41312,
"preview": "/*!\n * Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/f"
},
{
"path": "src/plugins/jquery/core.js",
"chars": 9165,
"preview": "/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in "
},
{
"path": "src/plugins/jquery/jquery.js",
"chars": 280364,
"preview": "/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "src/plugins/jquery/jquery.slim.js",
"chars": 227022,
"preview": "/*!\n * jQuery JavaScript Library v3.4.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-aja"
},
{
"path": "src/plugins/jquery-ui/AUTHORS.txt",
"chars": 12634,
"preview": "Authors ordered by first contribution\nA list of current team members is available at http://jqueryui.com/about\n\nPaul Bak"
},
{
"path": "src/plugins/jquery-ui/LICENSE.txt",
"chars": 1817,
"preview": "Copyright jQuery Foundation and other contributors, https://jquery.org/\n\nThis software consists of voluntary contributio"
},
{
"path": "src/plugins/jquery-ui/external/jquery/jquery.js",
"chars": 293430,
"preview": "/*!\n * jQuery JavaScript Library v1.12.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "src/plugins/jquery-ui/jquery-ui.css",
"chars": 37326,
"preview": "/*! jQuery UI - v1.12.1 - 2016-09-14\n* http://jqueryui.com\n* Includes: core.css, accordion.css, autocomplete.css, menu.c"
},
{
"path": "src/plugins/jquery-ui/jquery-ui.js",
"chars": 520714,
"preview": "/*! jQuery UI - v1.12.1 - 2016-09-14\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selectio"
},
{
"path": "src/plugins/jquery-ui/jquery-ui.structure.css",
"chars": 18705,
"preview": "/*!\n * jQuery UI CSS Framework 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n *"
},
{
"path": "src/plugins/jquery-ui/jquery-ui.theme.css",
"chars": 18671,
"preview": "/*!\n * jQuery UI CSS Framework 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n *"
},
{
"path": "src/plugins/jquery-validation/additional-methods.js",
"chars": 51923,
"preview": "/*!\n * jQuery Validation Plugin v1.19.1\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2019 Jörn Zaefferer\n * R"
},
{
"path": "src/plugins/jquery-validation/jquery.validate.js",
"chars": 50669,
"preview": "/*!\n * jQuery Validation Plugin v1.19.1\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2019 Jörn Zaefferer\n * R"
},
{
"path": "src/plugins/moment/locales.js",
"chars": 359723,
"preview": ";(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require "
},
{
"path": "src/plugins/moment/moment-with-locales.js",
"chars": 510072,
"preview": ";(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = facto"
},
{
"path": "src/plugins/overlayScrollbars/css/OverlayScrollbars.css",
"chars": 23420,
"preview": "/*!\n * OverlayScrollbars\n * https://github.com/KingSora/OverlayScrollbars\n *\n * Version: 1.11.0\n *\n * Copyright KingSora"
},
{
"path": "src/plugins/overlayScrollbars/js/OverlayScrollbars.js",
"chars": 361656,
"preview": "/*!\n * OverlayScrollbars\n * https://github.com/KingSora/OverlayScrollbars\n *\n * Version: 1.11.0\n *\n * Copyright KingSora"
},
{
"path": "src/plugins/overlayScrollbars/js/jquery.overlayScrollbars.js",
"chars": 317091,
"preview": "/*!\n * OverlayScrollbars\n * https://github.com/KingSora/OverlayScrollbars\n *\n * Version: 1.11.0\n *\n * Copyright KingSora"
},
{
"path": "src/read.php",
"chars": 1190,
"preview": "<?php\ninclude 'config/config.php';\n\nif ($_SERVER[\"REQUEST_METHOD\"] !== \"GET\" || !isset($_GET['id'])) {\n die(\"Method n"
},
{
"path": "src/saved_qrcode/zip/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "src/static_qrcode.php",
"chars": 7188,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH.'/includes/auth_validate.php';\nrequire_o"
},
{
"path": "src/static_qrcodes.php",
"chars": 2765,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH . '/includes/auth_validate.php';\nrequire"
},
{
"path": "src/upgrade/upgrade.php",
"chars": 1793,
"preview": "<?php\nrequire_once ('../config/environment.php');\n\n$conn = new mysqli(DATABASE_HOST,DATABASE_USER,DATABASE_PASSWORD,DATA"
},
{
"path": "src/user.php",
"chars": 3180,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH . '/includes/auth_validate.php';\nrequire"
},
{
"path": "src/users.php",
"chars": 2641,
"preview": "<?php\nsession_start();\nrequire_once 'config/config.php';\nrequire_once BASE_PATH . '/includes/auth_validate.php';\nrequire"
}
]
About this extraction
This page contains the full source code of the giandonatoinverso/PHP-Dynamic-Qr-code GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 126 files (6.8 MB), approximately 1.8M tokens, and a symbol index with 1661 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.