Merge pull request #5362 from yurydelendik/css-import
Use CSS import to separate pdfviewer styles
This commit is contained in:
commit
a10fde165c
22
external/builder/builder.js
vendored
22
external/builder/builder.js
vendored
@ -123,6 +123,15 @@ function preprocessCSS(mode, source, destination) {
|
||||
deprecatedInMozcentral.test(line));
|
||||
}
|
||||
|
||||
function expandImports(content, baseUrl) {
|
||||
return content.replace(/^\s*@import\s+url\(([^\)]+)\);\s*$/gm,
|
||||
function(all, url) {
|
||||
var file = path.join(path.dirname(baseUrl), url);
|
||||
var imported = fs.readFileSync(file, 'utf8').toString();
|
||||
return expandImports(imported, file);
|
||||
});
|
||||
}
|
||||
|
||||
function removePrefixed(content, hasPrefixedFilter) {
|
||||
var lines = content.split(/\r?\n/g);
|
||||
var i = 0;
|
||||
@ -168,14 +177,17 @@ function preprocessCSS(mode, source, destination) {
|
||||
return lines.join('\n');
|
||||
}
|
||||
|
||||
if (mode !== 'firefox' && mode !== 'mozcentral') {
|
||||
if (!mode) {
|
||||
throw new Error('Invalid CSS preprocessor mode');
|
||||
}
|
||||
|
||||
var content = fs.readFileSync(source, 'utf8');
|
||||
var out = removePrefixed(content,
|
||||
mode === 'mozcentral' ? hasPrefixedMozcentral : hasPrefixedFirefox);
|
||||
fs.writeFileSync(destination, out);
|
||||
var content = fs.readFileSync(source, 'utf8').toString();
|
||||
content = expandImports(content, source);
|
||||
if (mode === 'mozcentral' || mode === 'firefox') {
|
||||
content = removePrefixed(content, mode === 'mozcentral' ?
|
||||
hasPrefixedMozcentral : hasPrefixedFirefox);
|
||||
}
|
||||
fs.writeFileSync(destination, content);
|
||||
}
|
||||
exports.preprocessCSS = preprocessCSS;
|
||||
|
||||
|
31
make.js
31
make.js
@ -126,7 +126,6 @@ target.generic = function() {
|
||||
[COMMON_WEB_FILES, GENERIC_DIR + '/web'],
|
||||
['LICENSE', GENERIC_DIR],
|
||||
['external/webL10n/l10n.js', GENERIC_DIR + '/web'],
|
||||
['web/viewer.css', GENERIC_DIR + '/web'],
|
||||
['web/compatibility.js', GENERIC_DIR + '/web'],
|
||||
['web/compressed.tracemonkey-pldi-09.pdf', GENERIC_DIR + '/web'],
|
||||
['external/bcmaps/*', GENERIC_DIR + '/web/cmaps/'],
|
||||
@ -135,11 +134,16 @@ target.generic = function() {
|
||||
preprocess: [
|
||||
[BUILD_TARGETS, GENERIC_DIR + BUILD_DIR],
|
||||
[COMMON_WEB_FILES_PREPROCESS, GENERIC_DIR + '/web']
|
||||
],
|
||||
preprocessCSS: [
|
||||
['generic', 'web/viewer.css',
|
||||
GENERIC_DIR + '/web/viewer.css']
|
||||
]
|
||||
};
|
||||
builder.build(setup);
|
||||
|
||||
cleanupJSSource(GENERIC_DIR + '/web/viewer.js');
|
||||
cleanupCSSSource(GENERIC_DIR + '/web/viewer.css');
|
||||
};
|
||||
|
||||
target.jsdoc = function() {
|
||||
@ -557,6 +561,16 @@ function cleanupJSSource(file) {
|
||||
content.to(file);
|
||||
}
|
||||
|
||||
function cleanupCSSSource(file) {
|
||||
var content = cat(file);
|
||||
|
||||
// Strip out all license headers in the middle.
|
||||
var reg = /\n\/\* Copyright(.|\n)*?Mozilla Foundation(.|\n)*?\*\//g;
|
||||
content = content.replace(reg, '');
|
||||
|
||||
content.to(file);
|
||||
}
|
||||
|
||||
//
|
||||
// make minified
|
||||
// Builds the minified production viewer that should be compatible with most
|
||||
@ -588,7 +602,6 @@ target.minified = function() {
|
||||
defines: defines,
|
||||
copy: [
|
||||
[COMMON_WEB_FILES, MINIFIED_DIR + '/web'],
|
||||
['web/viewer.css', MINIFIED_DIR + '/web'],
|
||||
['web/compressed.tracemonkey-pldi-09.pdf', MINIFIED_DIR + '/web'],
|
||||
['external/bcmaps/*', MINIFIED_DIR + '/web/cmaps'],
|
||||
['web/locale', MINIFIED_DIR + '/web']
|
||||
@ -596,10 +609,16 @@ target.minified = function() {
|
||||
preprocess: [
|
||||
[BUILD_TARGETS, MINIFIED_DIR + BUILD_DIR],
|
||||
[COMMON_WEB_FILES_PREPROCESS, MINIFIED_DIR + '/web']
|
||||
],
|
||||
preprocessCSS: [
|
||||
['minified', 'web/viewer.css',
|
||||
MINIFIED_DIR + '/web/viewer.css']
|
||||
]
|
||||
};
|
||||
builder.build(setup);
|
||||
|
||||
cleanupCSSSource(MINIFIED_DIR + '/web/viewer.css');
|
||||
|
||||
var viewerFiles = [
|
||||
'web/compatibility.js',
|
||||
'external/webL10n/l10n.js',
|
||||
@ -750,6 +769,7 @@ target.firefox = function() {
|
||||
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.js');
|
||||
cleanupJSSource(FIREFOX_BUILD_DIR + 'bootstrap.js');
|
||||
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + 'PdfjsChromeUtils.jsm');
|
||||
cleanupCSSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.css');
|
||||
|
||||
// Remove '.DS_Store' and other hidden files
|
||||
find(FIREFOX_BUILD_DIR).forEach(function(file) {
|
||||
@ -872,6 +892,7 @@ target.mozcentral = function() {
|
||||
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.js');
|
||||
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfJs.jsm');
|
||||
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfjsChromeUtils.jsm');
|
||||
cleanupCSSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.css');
|
||||
|
||||
// Remove '.DS_Store' and other hidden files
|
||||
find(MOZCENTRAL_DIR).forEach(function(file) {
|
||||
@ -982,18 +1003,22 @@ target.chromium = function() {
|
||||
CHROME_BUILD_DIR],
|
||||
['extensions/chromium/pageAction/*.*', CHROME_BUILD_DIR + '/pageAction'],
|
||||
['external/webL10n/l10n.js', CHROME_BUILD_CONTENT_DIR + '/web'],
|
||||
['web/viewer.css', CHROME_BUILD_CONTENT_DIR + '/web'],
|
||||
['external/bcmaps/*', CHROME_BUILD_CONTENT_DIR + '/web/cmaps'],
|
||||
['web/locale', CHROME_BUILD_CONTENT_DIR + '/web']
|
||||
],
|
||||
preprocess: [
|
||||
[BUILD_TARGETS, CHROME_BUILD_CONTENT_DIR + BUILD_DIR],
|
||||
[COMMON_WEB_FILES_PREPROCESS, CHROME_BUILD_CONTENT_DIR + '/web']
|
||||
],
|
||||
preprocessCSS: [
|
||||
['chrome', 'web/viewer.css',
|
||||
CHROME_BUILD_CONTENT_DIR + '/web/viewer.css']
|
||||
]
|
||||
};
|
||||
builder.build(setup);
|
||||
|
||||
cleanupJSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.js');
|
||||
cleanupCSSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.css');
|
||||
|
||||
// Update the build version number
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
|
||||
|
123
web/pdf_viewer.css
Normal file
123
web/pdf_viewer.css
Normal file
@ -0,0 +1,123 @@
|
||||
/* Copyright 2014 Mozilla Foundation
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
@import url(text_layer_builder.css);
|
||||
|
||||
.pdfViewer .canvasWrapper {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pdfViewer .page {
|
||||
direction: ltr;
|
||||
width: 816px;
|
||||
height: 1056px;
|
||||
margin: 1px auto -8px auto;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
border: 9px solid transparent;
|
||||
background-clip: content-box;
|
||||
border-image: url(images/shadow.png) 9 9 repeat;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.pdfViewer .page canvas {
|
||||
margin: 0;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pdfViewer .page .loadingIcon {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: url('images/loading-icon.gif') center no-repeat;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotLink > a:hover {
|
||||
opacity: 0.2;
|
||||
background: #ff0;
|
||||
box-shadow: 0px 2px 10px #ff0;
|
||||
}
|
||||
|
||||
:-webkit-full-screen .pdfViewer .page {
|
||||
margin-bottom: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:-moz-full-screen .pdfViewer .page {
|
||||
margin-bottom: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:-ms-fullscreen .pdfViewer .page {
|
||||
margin-bottom: 100% !important;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:fullscreen .pdfViewer .page {
|
||||
margin-bottom: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotationHighlight {
|
||||
position: absolute;
|
||||
border: 2px #FFFF99 solid;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotText > img {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotTextContentWrapper {
|
||||
position: absolute;
|
||||
width: 20em;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotTextContent {
|
||||
z-index: 200;
|
||||
float: left;
|
||||
max-width: 20em;
|
||||
background-color: #FFFF99;
|
||||
box-shadow: 0px 2px 5px #333;
|
||||
border-radius: 2px;
|
||||
padding: 0.6em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotTextContent > h1 {
|
||||
font-size: 1em;
|
||||
border-bottom: 1px solid #000000;
|
||||
padding-bottom: 0.2em;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotTextContent > p {
|
||||
padding-top: 0.2em;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotLink > a {
|
||||
position: absolute;
|
||||
font-size: 1em;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pdfViewer .page .annotLink > a /* -ms-a */ {
|
||||
background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAA\
|
||||
LAAAAAABAAEAAAIBRAA7") 0 0 repeat;
|
||||
}
|
59
web/text_layer_builder.css
Normal file
59
web/text_layer_builder.css
Normal file
@ -0,0 +1,59 @@
|
||||
/* Copyright 2014 Mozilla Foundation
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
.textLayer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.textLayer > div {
|
||||
color: transparent;
|
||||
position: absolute;
|
||||
white-space: pre;
|
||||
cursor: text;
|
||||
-webkit-transform-origin: 0% 0%;
|
||||
-moz-transform-origin: 0% 0%;
|
||||
-o-transform-origin: 0% 0%;
|
||||
-ms-transform-origin: 0% 0%;
|
||||
transform-origin: 0% 0%;
|
||||
}
|
||||
|
||||
.textLayer .highlight {
|
||||
margin: -1px;
|
||||
padding: 1px;
|
||||
|
||||
background-color: rgb(180, 0, 170);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.begin {
|
||||
border-radius: 4px 0px 0px 4px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.end {
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.middle {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.selected {
|
||||
background-color: rgb(0, 100, 0);
|
||||
}
|
156
web/viewer.css
156
web/viewer.css
@ -1,4 +1,4 @@
|
||||
/* Copyright 2012 Mozilla Foundation
|
||||
/* Copyright 2014 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -13,6 +13,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
@import url(pdf_viewer.css);
|
||||
|
||||
* {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
@ -88,26 +90,6 @@ select {
|
||||
cursor: none;
|
||||
}
|
||||
|
||||
:-webkit-full-screen .page {
|
||||
margin-bottom: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:-moz-full-screen .page {
|
||||
margin-bottom: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:-ms-fullscreen .page {
|
||||
margin-bottom: 100% !important;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:fullscreen .page {
|
||||
margin-bottom: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
:-webkit-full-screen a:not(.internalLink) {
|
||||
display: none;
|
||||
}
|
||||
@ -1264,88 +1246,6 @@ html[dir='rtl'] .attachmentsItem > button {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.canvasWrapper {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
canvas {
|
||||
margin: 0;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.page {
|
||||
direction: ltr;
|
||||
width: 816px;
|
||||
height: 1056px;
|
||||
margin: 1px auto -8px auto;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
border: 9px solid transparent;
|
||||
background-clip: content-box;
|
||||
border-image: url(images/shadow.png) 9 9 repeat;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.annotLink > a:hover {
|
||||
opacity: 0.2;
|
||||
background: #ff0;
|
||||
box-shadow: 0px 2px 10px #ff0;
|
||||
}
|
||||
|
||||
.loadingIcon {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: url('images/loading-icon.gif') center no-repeat;
|
||||
}
|
||||
|
||||
.textLayer {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.textLayer > div {
|
||||
color: transparent;
|
||||
position: absolute;
|
||||
white-space: pre;
|
||||
cursor: text;
|
||||
-webkit-transform-origin: 0% 0%;
|
||||
-moz-transform-origin: 0% 0%;
|
||||
-o-transform-origin: 0% 0%;
|
||||
-ms-transform-origin: 0% 0%;
|
||||
transform-origin: 0% 0%;
|
||||
}
|
||||
|
||||
.textLayer .highlight {
|
||||
margin: -1px;
|
||||
padding: 1px;
|
||||
|
||||
background-color: rgb(180, 0, 170);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.begin {
|
||||
border-radius: 4px 0px 0px 4px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.end {
|
||||
border-radius: 0px 4px 4px 0px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.middle {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.textLayer .highlight.selected {
|
||||
background-color: rgb(0, 100, 0);
|
||||
}
|
||||
|
||||
/* TODO: file FF bug to support ::-moz-selection:window-inactive
|
||||
so we can override the opaque grey background when the window is inactive;
|
||||
@ -1359,56 +1259,6 @@ canvas {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.annotationHighlight {
|
||||
position: absolute;
|
||||
border: 2px #FFFF99 solid;
|
||||
}
|
||||
|
||||
.annotText > img {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.annotTextContentWrapper {
|
||||
position: absolute;
|
||||
width: 20em;
|
||||
}
|
||||
|
||||
.annotTextContent {
|
||||
z-index: 200;
|
||||
float: left;
|
||||
max-width: 20em;
|
||||
background-color: #FFFF99;
|
||||
box-shadow: 0px 2px 5px #333;
|
||||
border-radius: 2px;
|
||||
padding: 0.6em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.annotTextContent > h1 {
|
||||
font-size: 1em;
|
||||
border-bottom: 1px solid #000000;
|
||||
padding-bottom: 0.2em;
|
||||
}
|
||||
|
||||
.annotTextContent > p {
|
||||
padding-top: 0.2em;
|
||||
}
|
||||
|
||||
.annotLink > a {
|
||||
position: absolute;
|
||||
font-size: 1em;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.annotLink > a /* -ms-a */ {
|
||||
background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAA\
|
||||
LAAAAAABAAEAAAIBRAA7") 0 0 repeat;
|
||||
}
|
||||
|
||||
#errorWrapper {
|
||||
background: none repeat scroll 0 0 #FF5555;
|
||||
color: white;
|
||||
|
@ -300,7 +300,7 @@ http://sourceforge.net/adobe/cmap/wiki/License/
|
||||
</menu>
|
||||
|
||||
<div id="viewerContainer" tabindex="0">
|
||||
<div id="viewer"></div>
|
||||
<div id="viewer" class="pdfViewer"></div>
|
||||
</div>
|
||||
|
||||
<div id="errorWrapper" hidden='true'>
|
||||
|
Loading…
Reference in New Issue
Block a user