From 96d3b84593362eecc2e8f1d5b4f13b7779efcbcd Mon Sep 17 00:00:00 2001 From: Sean Fridman Date: Thu, 9 Apr 2015 12:46:44 -0400 Subject: Update app manifest to use one schema --- site/index.js | 71 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 27 deletions(-) (limited to 'site/index.js') diff --git a/site/index.js b/site/index.js index d36778f..55752e5 100644 --- a/site/index.js +++ b/site/index.js @@ -1,14 +1,5 @@ var okcms = require('..'); -var projectSchema = { - id: {type: 'string', id: true}, - title: {type: 'string'}, - shortname: {type: 'string'}, - description: {type: 'text'}, - video: {type: 'video'}, - images: {type: 'captioned-image-list'} -} - var app = okcms.createApp({ root: 'public', @@ -20,19 +11,26 @@ var app = okcms.createApp({ body: {type: 'text'}, image: {type: 'string'} }, - retail: projectSchema, - advertising: projectSchema, - experiential: projectSchema, - content: projectSchema, + project: { + id: {type: 'string', id: true}, + title: {type: 'string'}, + shortname: {type: 'string'}, + description: {type: 'text'}, + video: {type: 'video'}, + images: {type: 'captioned-image-list'}, + category: {type: 'enum', options: [ + 'retail', + 'advertising', + 'experiential', + 'content'] + } + } }, resources: [ { type: 'page', static: {id: 'about'}}, { type: 'page', static: {id: 'contact'}}, - { type: 'retail' }, - { type: 'advertising' }, - { type: 'experiential' }, - { type: 'content' }, + { type: 'project' } ], services: { @@ -46,11 +44,7 @@ var app = okcms.createApp({ views: { '/': { data: [ - {type: 'retail', query: '*'}, - {type: 'advertising', query: '*'}, - {type: 'experiential', query: '*'}, - {type: 'content', query: '*'}, - {type: 'page', query: '*'} + {type: 'project', query: '*'}, ] }, '/about': { @@ -60,20 +54,43 @@ var app = okcms.createApp({ data: {type: 'page', query: 'contact'} }, '/retail/:id': { - data: {type: 'retail', query: ':id'}, + data: { + type: 'project', + query: { + category: 'retail', + id: ':id' + } + }, template: 'project' }, '/advertising/:id': { - data: {type: 'advertising', query: ':id'}, + data: { + type: 'project', + query: { + category: 'advertising', + id: ':id' + } + }, template: 'project' }, '/experiential/:id': { - data: {type: 'experiential', query: ':id'}, + data: { + type: 'project', + query: { + category: 'experiential', + id: ':id' + } + }, template: 'project' }, '/content/:id': { - data: {type: 'content', query: ':id'}, - template: 'project' + data: { + type: 'project', + query: { + category: 'content', + id: ':id' + } + } } } -- cgit v1.2.3-70-g09d2 From 3a28bacfc38cd0244ada6e74655d1e30d81d4d34 Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Thu, 9 Apr 2015 13:32:45 -0400 Subject: video thumbnail and /all page --- site/index.js | 7 +++++++ site/templates/all.liquid | 10 ++++++---- site/templates/project.liquid | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) (limited to 'site/index.js') diff --git a/site/index.js b/site/index.js index 55752e5..6e5aed0 100644 --- a/site/index.js +++ b/site/index.js @@ -53,6 +53,13 @@ var app = okcms.createApp({ '/contact': { data: {type: 'page', query: 'contact'} }, + '/all': { + data: { + type: 'project', + query: '*' + }, + template: 'all' + }, '/retail/:id': { data: { type: 'project', diff --git a/site/templates/all.liquid b/site/templates/all.liquid index edb31d2..852137f 100644 --- a/site/templates/all.liquid +++ b/site/templates/all.liquid @@ -1,6 +1,8 @@
-
- - DIESEL SS15 -
+ {% for project in projects %} +
+ + {{ project.shortname }} +
+ {% endfor %}
diff --git a/site/templates/project.liquid b/site/templates/project.liquid index 583cb09..bcaea75 100644 --- a/site/templates/project.liquid +++ b/site/templates/project.liquid @@ -4,7 +4,7 @@ +
-- cgit v1.2.3-70-g09d2 From 90b27c7e5aac1b81aac471d07f8f42dccb90d90b Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 13 Apr 2015 12:34:50 -0400 Subject: styling/debugging --- site/db.json | 4 +-- site/index.js | 8 ++--- themes/okadmin/public/css/main.css | 39 ++++++++++++++++++++----- themes/okadmin/public/js/app.js | 11 +++++-- themes/okadmin/templates/index.liquid | 2 +- themes/okadmin/templates/partials/flash.liquid | 9 +++++- themes/okadmin/templates/partials/inputs.liquid | 4 +-- themes/okadmin/templates/resource.liquid | 2 +- 8 files changed, 58 insertions(+), 21 deletions(-) (limited to 'site/index.js') diff --git a/site/db.json b/site/db.json index c07e321..d2e882a 100644 --- a/site/db.json +++ b/site/db.json @@ -28,7 +28,7 @@ "caption": "CURABITUR BLANDIT TEMPUS PORTTITOR 4" } ], - "__index": 1 + "__index": "0" } ], "page": [ @@ -47,4 +47,4 @@ "__index": 0 } ] -} +} \ No newline at end of file diff --git a/site/index.js b/site/index.js index a59e74e..dace900 100644 --- a/site/index.js +++ b/site/index.js @@ -15,15 +15,15 @@ var app = okcms.createApp({ id: {type: 'string', id: true}, title: {type: 'string'}, shortname: {type: 'string'}, - description: {type: 'text'}, - video: {type: 'video'}, - images: {type: 'captioned-image-list'}, category: {type: 'enum', options: [ 'retail', 'advertising', 'experiential', 'content'] - } + }, + description: {type: 'text'}, + video: {type: 'video'}, + images: {type: 'captioned-image-list'}, } }, diff --git a/themes/okadmin/public/css/main.css b/themes/okadmin/public/css/main.css index 3762fd4..67271bc 100644 --- a/themes/okadmin/public/css/main.css +++ b/themes/okadmin/public/css/main.css @@ -109,7 +109,7 @@ h2 { pointer-events: none; } - /* Makes the button look like a link */ +/* Makes the button look like a link */ .main.index .resource-category button { background: none !important; height: 1.5em; @@ -117,6 +117,8 @@ h2 { padding: 0 !important; font: inherit; cursor: pointer; + font-family: Monaco, monospace; + text-transform: uppercase; } .main.index .resource-category .btn { @@ -134,7 +136,7 @@ h2 { } .main.index .resource-category .btn:hover { - border-bottom: 3px solid rgba(0, 0, 0, 0.25); + border-bottom: 1px solid rgba(0, 0, 0, 0.25); } .main.index .resource-category .btn { @@ -203,6 +205,12 @@ label { padding: 0 0.5em; margin-bottom: 1em; } +.main.resource form input[name=id] { + width: 15em; +} +button, input[type=submit] { + cursor: pointer; +} .main.resource form .group { display: block; float: left; @@ -280,18 +288,26 @@ label { background: #ddd; clear: left; text-align: left; - padding: 10px; - width: 15em; + float: left; + margin-right: 1em; position: relative; + overflow: hidden; + cursor: pointer; } .add-image-button:hover { background: #def; } +.main.resource form .add-image-button button { + margin: 0; + pointer-events: none; + width: 100%; height: 100%; +} .add-image-button input[type=file] { opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; + margin: 0; padding: 0; cursor: pointer; } li.image-element:hover .remove-image { @@ -314,13 +330,20 @@ li.image-element .remove-image:hover { } -.errors { +.success, .errors { background: white; - padding: 10px; - width: 100%; + padding: 9px 8px 7px; + width: 50%; line-height: 1.4em; + border: 1px solid; + margin: 1em; + border-radius: 2px; +} + +.success { + color: green; } -.errors .message { +.errors { color: red; } diff --git a/themes/okadmin/public/js/app.js b/themes/okadmin/public/js/app.js index 1ab9956..91a8e1a 100644 --- a/themes/okadmin/public/js/app.js +++ b/themes/okadmin/public/js/app.js @@ -28,7 +28,7 @@ var OKAdmin = function(){ $(".captioned-image-list ol").disableSelection() // delete image - $(document).on("click", ".remove-image", function(){ + $(document).on("mousedown", ".remove-image", function(){ if (confirm("Delete this image?")) { $(this).parent().remove() } @@ -50,7 +50,14 @@ var OKAdmin = function(){ })) // fix post indexing in list-driven inputs - $(".main.resource form").submit(function(){ + $(".main.resource form").submit(function(e){ + var $id = $("[name=id]") + if ($id.length && ! $id.val()) { + alert("Please enter an ID") + $id.focus() + e.preventDefault() + return + } $(".image-element").each(function(index){ $(this).find("input,textarea").each(function(){ var field = $(this).attr("name").replace(/\[[0-9]*\]/, "[" + index + "]") diff --git a/themes/okadmin/templates/index.liquid b/themes/okadmin/templates/index.liquid index 0672613..10903b9 100644 --- a/themes/okadmin/templates/index.liquid +++ b/themes/okadmin/templates/index.liquid @@ -26,7 +26,7 @@
cancel - edit + sort + diff --git a/themes/okadmin/templates/partials/flash.liquid b/themes/okadmin/templates/partials/flash.liquid index 1980ab5..e51a86b 100644 --- a/themes/okadmin/templates/partials/flash.liquid +++ b/themes/okadmin/templates/partials/flash.liquid @@ -1,8 +1,15 @@ +{% if success.length > 0 %}
+
Changes saved.
+
+{% endif %} + +{% if errors.length > 0 %}
{% for error in errors %}
@@ -10,4 +17,4 @@
{% endfor %}
- +{% endif %} \ No newline at end of file diff --git a/themes/okadmin/templates/partials/inputs.liquid b/themes/okadmin/templates/partials/inputs.liquid index 99258f3..b9cf7a3 100644 --- a/themes/okadmin/templates/partials/inputs.liquid +++ b/themes/okadmin/templates/partials/inputs.liquid @@ -29,7 +29,7 @@ {% endif %} name="{{name}}"> {% for option in spec.options %} - + {% endfor %} {% elsif type == 'video' %} @@ -56,7 +56,7 @@
- + Add images +
-- cgit v1.2.3-70-g09d2 From d45f617dc74a07beb352d04537d47a77193f487f Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 13 Apr 2015 18:19:41 -0400 Subject: hide id field --- site/index.js | 4 ++-- themes/okadmin/public/js/app.js | 16 ++++++++++++---- themes/okadmin/templates/partials/inputs.liquid | 19 +++---------------- 3 files changed, 17 insertions(+), 22 deletions(-) (limited to 'site/index.js') diff --git a/site/index.js b/site/index.js index 8eec697..d4f5cb4 100644 --- a/site/index.js +++ b/site/index.js @@ -1,7 +1,7 @@ var okcms = require('..'); var projectSchema = { - id: {type: 'string', id: true}, + id: {type: 'string', id: true, hidden: true}, title: {type: 'string'}, shortname: {type: 'string'}, description: {type: 'text'}, @@ -15,7 +15,7 @@ var app = okcms.createApp({ schemas: { page: { - id: {type: 'string'}, + id: {type: 'string', hidden: true}, title: {type: 'string'}, body: {type: 'text'}, image: {type: 'string'} diff --git a/themes/okadmin/public/js/app.js b/themes/okadmin/public/js/app.js index 91a8e1a..009fe4c 100644 --- a/themes/okadmin/public/js/app.js +++ b/themes/okadmin/public/js/app.js @@ -51,13 +51,18 @@ var OKAdmin = function(){ // fix post indexing in list-driven inputs $(".main.resource form").submit(function(e){ - var $id = $("[name=id]") - if ($id.length && ! $id.val()) { - alert("Please enter an ID") - $id.focus() + var $id = $("[name=id]"), $title = $("[name=title]") + + if ($title.length && ! $title.val()) { + alert("Please enter a title") + $title.focus() e.preventDefault() return } + + var slug = slugify( $title.val() ) + $id.val( slug ) + $(".image-element").each(function(index){ $(this).find("input,textarea").each(function(){ var field = $(this).attr("name").replace(/\[[0-9]*\]/, "[" + index + "]") @@ -129,3 +134,6 @@ var OKAdmin = function(){ $(function(){ window.app = new OKAdmin () }) + + +function slugify (s){ return (s || "").toLowerCase().replace(/\s/g,"-").replace(/[^-_a-zA-Z0-9]/g, '-').replace(/-+/g,"-") } diff --git a/themes/okadmin/templates/partials/inputs.liquid b/themes/okadmin/templates/partials/inputs.liquid index 4d6372d..253b275 100644 --- a/themes/okadmin/templates/partials/inputs.liquid +++ b/themes/okadmin/templates/partials/inputs.liquid @@ -3,30 +3,17 @@ {% assign spec = pair[1] %} {% assign type = spec.type %} -
- +
+ {% if type == 'string' %} + name="{{name}}" type="text" value="{{spec.value}}"> {% elsif type == 'text' %} {% elsif type == 'enum' %} - - + +
+ {% elsif type == 'image' %} +
+
+
+ + +
+ +
+
+ + + {{spec.value.caption}} + +
+
{% elsif type == 'captioned-image-list' %} -
+
+
+
+ + +
+ +
+ + +
    {% for image in spec.value %}
  1. @@ -41,19 +74,6 @@
  2. {% endfor %}
-
- - -
- -
{% elsif type == 'meta' %} -- cgit v1.2.3-70-g09d2 From 51d8c665d0c09f1c6222369eb674a1d83f6b2522 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 16 Apr 2015 18:59:15 -0400 Subject: add dirname to the uploaded images --- Readme.md | 1 + app/node_modules/okservices/index.js | 1 + site/index.js | 1 + 3 files changed, 3 insertions(+) (limited to 'site/index.js') diff --git a/Readme.md b/Readme.md index 61296e9..e955693 100644 --- a/Readme.md +++ b/Readme.md @@ -10,5 +10,6 @@ * node index Server will be running on http://lvh.me:1337/ + Admin area available on http://lvh.me:1337/admin/ diff --git a/app/node_modules/okservices/index.js b/app/node_modules/okservices/index.js index 46f7ffd..015fff0 100644 --- a/app/node_modules/okservices/index.js +++ b/app/node_modules/okservices/index.js @@ -21,6 +21,7 @@ function OKImageService(options) { key: options.s3.key, secret: options.s3.secret, bucket: options.s3.bucket, + dirname: options.s3.dirname, headers: { 'x-amz-acl': 'public-read' } diff --git a/site/index.js b/site/index.js index 30e4a76..6d34b89 100644 --- a/site/index.js +++ b/site/index.js @@ -53,6 +53,7 @@ var app = okcms.createApp({ key: process.env.S3_KEY, secret: process.env.S3_SECRET, bucket: process.env.S3_BUCKET, + dirname: "twohustlers", } }, -- cgit v1.2.3-70-g09d2 From b93aa2b3f2e1a3c42f19942be13ca7fb34b03d38 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 23 Apr 2015 14:25:10 -0400 Subject: reorder --- site/index.js | 8 ++++---- site/templates/all.liquid | 12 ++++++------ site/templates/index.liquid | 20 ++++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) (limited to 'site/index.js') diff --git a/site/index.js b/site/index.js index 6d34b89..3283b82 100644 --- a/site/index.js +++ b/site/index.js @@ -27,10 +27,10 @@ var app = okcms.createApp({ body: {type: 'text'}, image: {type: 'string'} }, - retail: projectSchema, advertising: projectSchema, - experiential: projectSchema, content: projectSchema, + experiential: projectSchema, + retail: projectSchema, shape: { id: {type: 'string', id: true, hidden: true}, title: {type: 'string'}, @@ -42,10 +42,10 @@ var app = okcms.createApp({ { type: 'page', static: {id: 'about'}}, { type: 'page', static: {id: 'contact'}}, { type: 'shape', static: {id: 'shape-images'}}, - { type: 'retail' }, { type: 'advertising' }, + { type: 'content' }, { type: 'experiential' }, - { type: 'content' } + { type: 'retail' }, ], services: { diff --git a/site/templates/all.liquid b/site/templates/all.liquid index e6f39bf..1ee66ff 100644 --- a/site/templates/all.liquid +++ b/site/templates/all.liquid @@ -1,12 +1,12 @@
- {% for project in retails %} -
+ {% for project in advertisings %} +
{{ project.title }}
{% endfor %} - {% for project in advertisings %} -
+ {% for project in contents %} +
{{ project.title }}
@@ -17,8 +17,8 @@ {{ project.title }}
{% endfor %} - {% for project in contents %} -
+ {% for project in retails %} +
{{ project.title }}
diff --git a/site/templates/index.liquid b/site/templates/index.liquid index c67cdc2..5807329 100644 --- a/site/templates/index.liquid +++ b/site/templates/index.liquid @@ -85,16 +85,16 @@ WEBSITE BY OKFOCUS, http://okfoc.us, Internet Legends.
-- cgit v1.2.3-70-g09d2 From 40d553c5e76aa685f547faa2419fd4e71cbf67a9 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 24 Apr 2015 17:44:18 -0400 Subject: maxbytes setting --- app/node_modules/okservices/index.js | 1 + site/index.js | 1 + site/templates/page.liquid | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) (limited to 'site/index.js') diff --git a/app/node_modules/okservices/index.js b/app/node_modules/okservices/index.js index 015fff0..fbbdbfd 100644 --- a/app/node_modules/okservices/index.js +++ b/app/node_modules/okservices/index.js @@ -22,6 +22,7 @@ function OKImageService(options) { secret: options.s3.secret, bucket: options.s3.bucket, dirname: options.s3.dirname, + maxBytes: options.s3.maxbytes, headers: { 'x-amz-acl': 'public-read' } diff --git a/site/index.js b/site/index.js index d7989b9..8bb4b4d 100644 --- a/site/index.js +++ b/site/index.js @@ -54,6 +54,7 @@ var app = okcms.createApp({ secret: process.env.S3_SECRET, bucket: process.env.S3_BUCKET, dirname: "twohustlers", + maxbytes: 1024*1024*2, } }, diff --git a/site/templates/page.liquid b/site/templates/page.liquid index 7c295ff..63f71f2 100644 --- a/site/templates/page.liquid +++ b/site/templates/page.liquid @@ -1,7 +1,7 @@
- {{page.title}} {% if page.image %} + {{page.title}}
{{page.body | newline_to_br}} -- cgit v1.2.3-70-g09d2 From 3e2d7e98230990ad954b33203e0611358c1fa915 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 27 Apr 2015 14:24:20 -0400 Subject: stubbing in videos --- app/node_modules/okadminview/index.js | 1 + site/index.js | 3 +- site/templates/project.liquid | 5 ++- themes/okadmin/public/css/main.css | 17 +++++--- themes/okadmin/public/js/app.js | 58 ++++++++++++++++++++----- themes/okadmin/public/js/upload.js | 15 ++++++- themes/okadmin/templates/partials/inputs.liquid | 55 +++++++++++++++++++++-- 7 files changed, 130 insertions(+), 24 deletions(-) (limited to 'site/index.js') diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js index 82f364d..2a0fcd5 100644 --- a/app/node_modules/okadminview/index.js +++ b/app/node_modules/okadminview/index.js @@ -157,6 +157,7 @@ function OKAdminView(options) { resourceMissingHandler(req, res)() } else { view.renderResource(req, res, assign(data, { + JSON: JSON, success: req.flash('success'), errors: req.flash('errors') })); diff --git a/site/index.js b/site/index.js index 8bb4b4d..a7b207a 100644 --- a/site/index.js +++ b/site/index.js @@ -5,8 +5,7 @@ var projectSchema = { title: {type: 'string'}, menu: {type: 'string'}, description: {type: 'text'}, - video: {type: 'video'}, - images: {type: 'captioned-image-list'}, + images: {type: 'media-list'}, thumbnail: {type: 'image'}, } diff --git a/site/templates/project.liquid b/site/templates/project.liquid index b54722d..3d32c0d 100644 --- a/site/templates/project.liquid +++ b/site/templates/project.liquid @@ -1,7 +1,10 @@
{{project.title}} - +
+ PREVIOUS ASSET + NEXT ASSET +
- +
@@ -49,6 +49,55 @@
+ {% elsif type == 'media-list' %} +
+
+
+ + +
+ +
+ + + + + +
    + {% for image in spec.value %} + {% if image.token %} +
  1. + {{ JSON.stringify(spec.value) }} +
  2. + {% else %} +
  3. + + + {{image.caption}} + +
  4. + {% endif %} + {% endfor %} +
+
{% elsif type == 'captioned-image-list' %}
@@ -56,10 +105,10 @@
- +
- +
    + {% for image in spec.value %} +
  1. + + + + {{image.caption}} + +
  2. + {% endfor %} +
+
{% elsif type == 'meta' %} {% else %} -- cgit v1.2.3-70-g09d2 From 158aaa8ff7a9698b8a9f90739a1fe48ff2a6807b Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Tue, 19 May 2015 01:42:56 +0200 Subject: merge retail section into experiental --- site/db.json | 6 ++---- site/index.js | 26 ++++++++++++-------------- site/templates/all.liquid | 6 ------ site/templates/index.liquid | 6 ------ 4 files changed, 14 insertions(+), 30 deletions(-) (limited to 'site/index.js') diff --git a/site/db.json b/site/db.json index 4bb50e4..010ad37 100644 --- a/site/db.json +++ b/site/db.json @@ -1,6 +1,6 @@ { "meta": [], - "retail": [ + "experiential": [ { "id": "nicola-s-new-york", "title": "NICOLA’S NEW YORK", @@ -109,9 +109,7 @@ "caption": "" }, "__index": "2" - } - ], - "experiential": [ + }, { "id": "gaga-s-workshop-barneys-new-york", "title": "GAGA'S WORKSHOP + BARNEYS NEW YORK", diff --git a/site/index.js b/site/index.js index 04d2455..9e1f568 100644 --- a/site/index.js +++ b/site/index.js @@ -30,7 +30,6 @@ var app = okcms.createApp({ advertising: projectSchema, content: projectSchema, experiential: projectSchema, - retail: projectSchema, shape: { id: {type: 'string', id: true, hidden: true}, title: {type: 'string'}, @@ -46,7 +45,6 @@ var app = okcms.createApp({ { type: 'advertising' }, { type: 'content' }, { type: 'experiential' }, - { type: 'retail' }, ], services: { @@ -65,7 +63,7 @@ var app = okcms.createApp({ {type: 'page', query: 'contact'}, // {type: 'shape', query: 'about-images'}, {type: 'shape', query: 'shape-images'}, - {type: 'retail', query: '*'}, +// {type: 'retail', query: '*'}, {type: 'advertising', query: '*'}, {type: 'experiential', query: '*'}, {type: 'content', query: '*'}, @@ -83,23 +81,23 @@ var app = okcms.createApp({ }, '/all': { data: [ - {type: 'retail', query: '*'}, +// {type: 'retail', query: '*'}, {type: 'advertising', query: '*'}, {type: 'experiential', query: '*'}, {type: 'content', query: '*'}, ], template: 'all' }, - '/retail/:id': { - data: { - type: 'retail', - as: 'project', - query: { - id: ':id' - } - }, - template: 'project' - }, +// '/retail/:id': { +// data: { +// type: 'retail', +// as: 'project', +// query: { +// id: ':id' +// } +// }, +// template: 'project' +// }, '/advertising/:id': { data: { type: 'advertising', diff --git a/site/templates/all.liquid b/site/templates/all.liquid index 97528c2..ca4b83f 100644 --- a/site/templates/all.liquid +++ b/site/templates/all.liquid @@ -17,10 +17,4 @@ {{ project.menu }}
{% endfor %} - {% for project in retails %} -
- - {{ project.menu }} -
- {% endfor %}
diff --git a/site/templates/index.liquid b/site/templates/index.liquid index 573cfc0..41d64e6 100644 --- a/site/templates/index.liquid +++ b/site/templates/index.liquid @@ -101,12 +101,6 @@ WEBSITE BY OKFOCUS, http://okfoc.us, Internet Legends.
{% for project in experientials %} {{ project.menu }} - {% endfor %} -
-
retail
-
- {% for project in retails %} - {{ project.menu }} {% endfor %}
-- cgit v1.2.3-70-g09d2 From b3d9a5d112a8b63b46c72c7a83324758af9ad95b Mon Sep 17 00:00:00 2001 From: Julie Lala Date: Tue, 19 May 2015 10:40:58 +0200 Subject: production --- Gruntfile.js | 74 ++++++++++++------------------------------- site/index.js | 1 + site/public/assets/app.min.js | 10 ++++++ 3 files changed, 32 insertions(+), 53 deletions(-) create mode 100644 site/public/assets/app.min.js (limited to 'site/index.js') diff --git a/Gruntfile.js b/Gruntfile.js index 4a522a6..b32e6ad 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -3,43 +3,30 @@ module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), - dentist: { - options: { - include_js: "assets/javascripts/app.min.js", - include_css: "assets/stylesheets/css.css" - }, - build: { - src: 'index.html', - dest_js: 'tmp/null', - dest_css: 'tmp/null', - dest_html: 'dist/index.html' - } - }, concat: { index: { options: { separator: "\n;\n" }, src: [ - "assets/javascripts/vendor/loader.js", - "assets/javascripts/vendor/froogaloop.js", - "assets/javascripts/vendor/flickity.pkgd.js", - "assets/javascripts/vendor/wheel.js", - "assets/javascripts/vendor/polyfill.js", - "assets/javascripts/vendor/util.js", - - "assets/javascripts/mx/mx.skew.js", - "assets/javascripts/mx/extensions/mx.scene.js", - "assets/javascripts/mx/extensions/mx.unclampedOrbitCamera.js", - "assets/javascripts/mx/primitives/mx.image.js", - "assets/javascripts/environments/app.js", - "assets/javascripts/environments/path.js", - - "assets/javascripts/_env.js", - - "assets/javascripts/app.js", + "site/public/assets/javascripts/mx/mx.skew.js", + "site/public/assets/javascripts/mx/extensions/mx.scene.js", + "site/public/assets/javascripts/mx/extensions/mx.unclampedOrbitCamera.js", + "site/public/assets/javascripts/mx/primitives/mx.image.js", + + "site/public/assets/javascripts/vendor/jquery.min.js", + "site/public/assets/javascripts/vendor/froogaloop.js", + "site/public/assets/javascripts/vendor/fastclick.js", + "site/public/assets/javascripts/vendor/flickity.pkgd.js", + "site/public/assets/javascripts/vendor/loader.js", + "site/public/assets/javascripts/vendor/wheel.js", + "site/public/assets/javascripts/vendor/polyfill.js", + "site/public/assets/javascripts/vendor/util.js", + + "site/public/assets/javascripts/_env.js", + "site/public/assets/javascripts/app.js", ], - dest: 'dist/app.concat.js', + dest: 'site/public/assets/app.concat.js', }, }, @@ -48,35 +35,16 @@ module.exports = function(grunt) { banner: '/* okfoc.us 2o15 */\n' }, index: { - src: 'dist/app.concat.js', - dest: 'dist/assets/javascripts/app.min.js' + src: 'site/public/assets/app.concat.js', + dest: 'site/public/assets/app.min.js' } }, clean: { release: [ - "dist/app.concat.js", - "dist/app.init.js", + "site/public/assets/app.concat.js", "tmp/" ], - }, - - copy: { - build: { - files: [ - { - nonull: true, - expand: true, - src: [ - 'assets/stylesheets/css.css', - 'favicon.ico', - 'icon.jpg', - 'icon2.jpg', - ], - dest: "dist/" - }, - ] - }, } }); @@ -88,5 +56,5 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-dentist'); // Default task(s). -// grunt.registerTask('default', ['dentist', 'concat', 'uglify', 'copy', 'clean']); + grunt.registerTask('default', ['concat', 'uglify', 'clean']); }; diff --git a/site/index.js b/site/index.js index 9e1f568..8952c46 100644 --- a/site/index.js +++ b/site/index.js @@ -18,6 +18,7 @@ var app = okcms.createApp({ root: 'public', debug: false, + production: true, schemas: { page: { diff --git a/site/public/assets/app.min.js b/site/public/assets/app.min.js new file mode 100644 index 0000000..1790293 --- /dev/null +++ b/site/public/assets/app.min.js @@ -0,0 +1,10 @@ +/* okfoc.us 2o15 */ +function FastClick(a,b){"use strict";function c(a,b){return function(){return a.apply(b,arguments)}}var d;if(b=b||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=b.touchBoundary||10,this.layer=a,this.tapDelay=b.tapDelay||200,!FastClick.notNeeded(a)){for(var e=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],f=this,g=0,h=e.length;h>g;g++)f[e[g]]=c(f[e[g]],f);deviceIsAndroid&&(a.addEventListener("mouseover",this.onMouse,!0),a.addEventListener("mousedown",this.onMouse,!0),a.addEventListener("mouseup",this.onMouse,!0)),a.addEventListener("click",this.onClick,!0),a.addEventListener("touchstart",this.onTouchStart,!1),a.addEventListener("touchmove",this.onTouchMove,!1),a.addEventListener("touchend",this.onTouchEnd,!1),a.addEventListener("touchcancel",this.onTouchCancel,!1),Event.prototype.stopImmediatePropagation||(a.removeEventListener=function(b,c,d){var e=Node.prototype.removeEventListener;"click"===b?e.call(a,b,c.hijacked||c,d):e.call(a,b,c,d)},a.addEventListener=function(b,c,d){var e=Node.prototype.addEventListener;"click"===b?e.call(a,b,c.hijacked||(c.hijacked=function(a){a.propagationStopped||c(a)}),d):e.call(a,b,c,d)}),"function"==typeof a.onclick&&(d=a.onclick,a.addEventListener("click",function(a){d(a)},!1),a.onclick=null)}}function wheel(a){function b(b){if(!a.locked){a.propagate||(b.stopPropagation(),b.preventDefault());var c=0,d=0;event.deltaY?(d-=event.deltaY*a.ratio,c-=event.deltaX*a.ratio):event.wheelDeltaY?(d-=event.wheelDeltaY*a.ratio,c-=event.wheelDeltaX*a.ratio):event.wheelDelta?d-=event.wheelDelta*a.ratio:event.detail&&(d+=2*event.detail),!a.reversible&&0>d&&0>c||a.update(b,d,c)}}a=defaults(a,{el:document,update:function(a,b){},propagate:!1,locked:!1,reversible:!0,ratio:.02,val:0});var c=1;return a.el.addEventListener("gesturestart",function(a){c=a.scale},!1),a.el.addEventListener("gesturechange",function(b){var d=(c-b.scale)*window.innerWidth;c=b.scale,a.update(b,d)},!1),a.el.addEventListener("wheel",b,!1),a.el.addEventListener("DOMMouseScroll",b,!1),a.lock=function(){a.locked=!0},a.unlock=function(){a.locked=!1},a}function has3d(){var a,b,c=$("

")[0],d=$("');a.append(c);var d=$f(a.find("iframe")[0]);a.data("player",d),d.addEvent("ready",function(){d.addEvent("play",function(){a.addClass("playing")}),d.addEvent("pause",function(){a.removeClass("playing")})}),videos.push(d)}}function HustleLoader(){function a(){b()}function b(){setTimeout(function(){$("#loader_svg").addClass("slide")},100)}var c=document.getElementById("loader_svg_status");this.update=function(a){var b=lerp(1-a,336,118);c.setAttribute("y",b)},this.finish=function(a){$("#loader_rapper").addClass("hidden"),setTimeout(a,100),setTimeout(function(){$("#loader_rapper").hide()},500)},a()}var MX=MX||function(a){function b(){var a=document.body.style;r.prefix="webkitTransform"in a?"webkit":"mozTransform"in a?"moz":"msTransform"in a?"ms":"",k=r.transformProp=h("transform"),l=r.transitionProp=h("transition"),m=r.transformOriginProp=h("transformOrigin"),n=r.transformStyleProp=h("transformStyle"),o=r.perspectiveProp=h("perspective"),p=r.transitionEndEvent="webkit"===r.prefix?"webkitTransitionEnd":"transitionend";for(var b=["webkit","moz","ms"],d=0;d0?1:-1;return b.y=g*Math.atan2(c*Math.cos(b.x),f*-g),b.z=Math.atan2(Math.cos(b.x),Math.sin(b.x)*Math.sin(b.y))-Math.PI/2,"deg"===r.rotationUnit&&(b.x=e(b.x),b.y=e(b.y),b.z=e(b.z)),b},add:function(){if(this.el){var a=this;return Array.prototype.forEach.call(arguments,function(b){!b instanceof i||(a.el.appendChild(b.el),a.children||(a.children=[]),a.children.push(b),b.parent=a)}),this}},remove:function(){var b=this;return Array.prototype.forEach.call(arguments,function(c){var d=b.children.indexOf(c);-1!==d&&(b.children.splice(d,1),b.el.removeChild(c.el),c.parent=a)}),this},addTo:function(a){return"string"==typeof a&&(a=document.querySelector(a)),a instanceof HTMLElement&&a.appendChild?a.appendChild(this.el):(a instanceof i||a instanceof r.Scene)&&a.add(this),this},removeElement:function(){this.el.parentNode&&this.el.parentNode.removeChild(this.el)},setPosition:function(a){this.x=a.x||0===a.x?a.x:this.x,this.y=a.y||0===a.y?a.y:this.y,this.z=a.z||0===a.z?a.z:this.z},setRotation:function(a){this.rotationX=a.x||0===a.x?a.x:this.rotationX,this.rotationY=a.y||0===a.y?a.y:this.rotationY,this.rotationZ=a.z||0===a.z?a.z:this.rotationZ},setScale:function(a){this.scaleX=a.x||0===a.x?a.x:this.scaleX,this.scaleY=a.y||0===a.y?a.y:this.scaleY,this.scaleZ=a.z||0===a.z?a.z:this.scaleZ},setSkew:function(a){this.skewX=a.x||0===a.x?a.x:this.skewX,this.skewY=a.y||0===a.y?a.y:this.skewY},setCSSTransformOrigin:function(a){return this.el&&(this.el.style[m]=a),this},setCSSTransformStyle:function(a){return this.el&&(this.el.style[n]=a),this},setCSSTransition:function(a){return this.el&&(this.el.style[l]=a),this},setCSSPerspective:function(a){return this.el&&(this.el.style[o]=a),this},move:function(a){var b=this;b.ops=defaults(a,b.ops);for(var c in a)b[c]=a[c];b.dirty=!0,b.update()},onTransitionEnd:function(a){function b(){c.removeEventListener(p,b),a()}this.cancelTransitionEnd();var c=this.el;c.addEventListener(p,b)},cancelTransitionEnd:function(){this.el.removeEventListener(p)},toString:function(a){return a=a||"id width height depth x y z rotationX rotationY rotationZ scale".split(" "),this.__toString(a)},__toString:function(b,c){this.id=this.id||"undef";var d,e,f={},g=this.type||"Object3d",h=g.toLowerCase();for(var i in b)e=b[i],d=this[e],(0!==d||c)&&(f[e]="number"==typeof d?-1!=e.indexOf("rotation")?Number(d.toFixed(3)):~~d:d);return(c||"var "+h+" = new MX."+g)+"("+JSON.stringify(f,a,2)+")\n"+(c?"":"scene.add("+h+")")},contains:function(a,b,c){var d=!1,e=!1,f=!1;return d=null===a?!0:abs(this.x-a)<=this.width/2,e=null===b?!0:abs(this.y-b)<=this.height/2,f=null===c?!0:abs(this.z-c)<=this.depth/2,d&&e&&f}},i.extend=j.bind(i),r.Object3D=i,r.toRad=f,r.toDeg=e,Object.defineProperty(r,"positionAtCenter",{get:function(){return t},set:function(a){"boolean"==typeof a&&(t=a,t?c():d())}}),r}();MX.Camera=MX.Object3D.extend({init:function(){this.el=null,this.type="Camera"},move:function(a){for(var b in a)this[b]=a[b]},toString:function(){var a="x y z rotationX rotationY".split(" ");return this.__toString(a,"scene.camera.move")},getCameraEuler:function(a){var b=a.x-this.x,c=a.y-this.y,d=a.z-this.z;return r={},r.y=Math.atan2(-b,d),r.x=Math.atan2(-c,Math.sqrt(b*b+d*d)),r.z=0,"deg"===MX.rotationUnit&&(r.x=MX.toDeg(r.x),r.y=MX.toDeg(r.y)),r}}),MX.Scene=function(){function a(){this.el=document.createElement("div"),this.el.classList.add("mx-scene");var a=this.el.style;a[MX.transformProp]="preserve-3d",a.webkitPerspectiveOrigin="50% 50%",a.mozPerspectiveOrigin="50% 50%",a.perspectiveOrigin="50% 50%",a.webkitUserSelect="none",a.mozUserSelect="none",a.userSelect="none",a.overflow="hidden",this.inner=(new MX.Object3D).addTo(this.el),this.inner.el.style.width="0",this.inner.el.style.height="0";var b,c,d,e=this;Object.defineProperty(this,"width",{get:function(){return b},set:function(a){b=a,e.el.style.width=a+"px"}}),Object.defineProperty(this,"height",{get:function(){return c},set:function(a){c=a,e.el.style.height=a+"px"}}),Object.defineProperty(this,"perspective",{get:function(){return d},set:function(a){d=a,e.el.style[MX.perspectiveProp]=a+"px",e.inner.z=-a-e.camera.z,e.inner.rotationOrigin.z=-a}});this.camera=new MX.Camera;this.inner.rotationOrigin={x:0,y:0,z:0},this.perspective=0}var b=MX.Object3D.prototype.add,c=MX.Object3D.prototype.remove;return a.prototype={constructor:a,add:function(){return b.apply(this.inner,arguments),this},remove:function(){return c.apply(this.inner,arguments),this},addTo:function(a){return"string"==typeof a&&(a=document.querySelector(a)),a instanceof HTMLElement&&a.appendChild?a.appendChild(this.el):console.warn("You can only add a Scene to an HTML element."),this},update:function(){var a=this.inner,b=this.camera;return b.update(),a.z=-this.perspective-b.z,a.x=-b.x,a.y=-b.y,a.rotationX=-b.rotationX,a.rotationY=-b.rotationY,a.update(),this}},a}(),MX.OrbitCamera=function(a){function b(a){return function(b){a(b.touches[0])}}function c(a){k=a.pageX,l=a.pageY,f.dragging=!0}function d(a){f.dragging&&(f.delta(k-a.pageX,l-a.pageY),k=a.pageX,l=a.pageY)}function e(a){f.dragging=!1}var f={},g=!1;f.opt=a=defaults(a,{el:window,camera:scene.camera,radius:100,radiusRange:[10,1e3],rotationX:PI/2,rotationY:0,center:{x:0,y:0,z:0},sensitivity:10,wheelSensitivity:10,ease:10,wheelEase:10});var h,i,j,k,l,m=1e-10;return f.dragging=!1,f.init=function(){i=a.rotationY,h=a.rotationX,j=a.radius,f.wheel=new wheel({el:a.el,update:function(b,c){a.radius=clamp(a.radius+c*a.wheelSensitivity,a.radiusRange[0],a.radiusRange[1])}}),f.bind()},f.toggle=function(a){a?f.bind():f.unbind()},f.bind=function(){g||(g=!0,a.el.addEventListener("mousedown",c),window.addEventListener("mousemove",d),window.addEventListener("mouseup",e),a.el.addEventListener("touchstart",b(c)),window.addEventListener("touchmove",b(d)),window.addEventListener("touchend",b(e)),f.wheel.unlock())},f.unbind=function(){g&&(g=!1,a.el.removeEventListener("mousedown",c),window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",e),f.wheel.lock())},f.delta=function(b,c){a.rotationY+=b/window.innerWidth*a.sensitivity,a.rotationX=a.rotationX+c/window.innerHeight*a.sensitivity},f.move=function(b,c){a.rotationY=b,"number"==typeof c&&(a.rotationX=c)},f.zoom=function(b){a.radius=b},f.setZoom=function(b){j=a.radius=b},f.zoomPercent=function(b){a.radius=lerp(b,a.radiusRange[0],a.radiusRange[1])},f.zoomDelta=function(b){a.radius+=b},f.pause=function(){var b=sign(a.rotationY-i),c=sign(a.rotationX-h);a.rotationY=i+.1*b,a.rotationX=h+.1*c},f.update=function(){i=abs(i-a.rotationY)>m?avg(i,a.rotationY,a.ease):a.rotationY,h=abs(h-a.rotationX)>m?avg(h,a.rotationX,a.ease):a.rotationX,j=abs(j-a.radius)>m?avg(j,a.radius,a.wheelEase):a.radius,a.camera.x=a.center.x+j*sin(h)*cos(i),a.camera.z=a.center.y+j*sin(h)*sin(i),a.camera.y=a.center.z+j*cos(h),a.camera.rotationX=PI/2-h,a.camera.rotationY=i+PI/2},f},MX.Image=MX.Object3D.extend({init:function(a){this.type="Image",this.media=a.media,this.width=0,this.height=0,this.x=a.x||0,this.y=a.y||0,this.z=a.z||0,this.scale=a.scale||1,this.backface=a.backface||!1,a.className&&this.el.classList.add(a.className),this.backface&&this.el.classList.add("backface-visible"),this.el.classList.add("image"),this.el.classList.add("mx-scenery"),this.el.style.backgroundRepeat="no-repeat",this.load(a)},load:function(a){var b=this;b.ops=defaults(a,b.ops);var c=new Image;c.onload=function(){b.ops&&(b.scale=b.ops.scale||1,b.width=b.ops.width||c.naturalWidth,b.height=b.ops.height||c.naturalHeight,b.el.style.backgroundImage="url("+c.src+")",b.el.classList.add("image"),b.dirty=!0,b.ops.onload&&b.ops.onload(c),b.update())},c.src=a.src,c.complete&&setTimeout(c.onload)}}),!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b=a.length,c=fa.type(a);return"function"===c||fa.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(fa.isFunction(b))return fa.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return fa.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(na.test(b))return fa.filter(b,a,c);b=fa.filter(b,a)}return fa.grep(a,function(a){return fa.inArray(a,b)>=0!==c})}function e(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function f(a){var b=va[a]={};return fa.each(a.match(ua)||[],function(a,c){b[c]=!0}),b}function g(){pa.addEventListener?(pa.removeEventListener("DOMContentLoaded",h,!1),a.removeEventListener("load",h,!1)):(pa.detachEvent("onreadystatechange",h),a.detachEvent("onload",h))}function h(){(pa.addEventListener||"load"===event.type||"complete"===pa.readyState)&&(g(),fa.ready())}function i(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(Aa,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:za.test(c)?fa.parseJSON(c):c}catch(e){}fa.data(a,b,c)}else c=void 0}return c}function j(a){var b;for(b in a)if(("data"!==b||!fa.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function k(a,b,c,d){if(fa.acceptData(a)){var e,f,g=fa.expando,h=a.nodeType,i=h?fa.cache:a,j=h?a[g]:a[g]&&g;if(j&&i[j]&&(d||i[j].data)||void 0!==c||"string"!=typeof b)return j||(j=h?a[g]=W.pop()||fa.guid++:g),i[j]||(i[j]=h?{}:{toJSON:fa.noop}),("object"==typeof b||"function"==typeof b)&&(d?i[j]=fa.extend(i[j],b):i[j].data=fa.extend(i[j].data,b)),f=i[j],d||(f.data||(f.data={}),f=f.data),void 0!==c&&(f[fa.camelCase(b)]=c),"string"==typeof b?(e=f[b],null==e&&(e=f[fa.camelCase(b)])):e=f,e}}function l(a,b,c){if(fa.acceptData(a)){var d,e,f=a.nodeType,g=f?fa.cache:a,h=f?a[fa.expando]:fa.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){fa.isArray(b)?b=b.concat(fa.map(b,fa.camelCase)):b in d?b=[b]:(b=fa.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;for(;e--;)delete d[b[e]];if(c?!j(d):!fa.isEmptyObject(d))return}(c||(delete g[h].data,j(g[h])))&&(f?fa.cleanData([a],!0):da.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}function m(){return!0}function n(){return!1}function o(){try{return pa.activeElement}catch(a){}}function p(a){var b=La.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function q(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==ya?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==ya?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||fa.nodeName(d,b)?f.push(d):fa.merge(f,q(d,b));return void 0===b||b&&fa.nodeName(a,b)?fa.merge([a],f):f}function r(a){Fa.test(a.type)&&(a.defaultChecked=a.checked)}function s(a,b){return fa.nodeName(a,"table")&&fa.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function t(a){return a.type=(null!==fa.find.attr(a,"type"))+"/"+a.type,a}function u(a){var b=Wa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function v(a,b){for(var c,d=0;null!=(c=a[d]);d++)fa._data(c,"globalEval",!b||fa._data(b[d],"globalEval"))}function w(a,b){if(1===b.nodeType&&fa.hasData(a)){var c,d,e,f=fa._data(a),g=fa._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)fa.event.add(b,c,h[c][d])}g.data&&(g.data=fa.extend({},g.data))}}function x(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!da.noCloneEvent&&b[fa.expando]){e=fa._data(b);for(d in e.events)fa.removeEvent(b,d,e.handle);b.removeAttribute(fa.expando)}"script"===c&&b.text!==a.text?(t(b).text=a.text,u(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),da.html5Clone&&a.innerHTML&&!fa.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Fa.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function y(b,c){var d=fa(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:fa.css(d[0],"display");return d.detach(),e}function z(a){var b=pa,c=ab[a];return c||(c=y(a,b),"none"!==c&&c||(_a=(_a||fa("