Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
pagedjs
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
julien
pagedjs
Commits
16021617
Commit
16021617
authored
Mar 30, 2018
by
Fred Chasen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update sheet
parent
c91ec735
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
185 additions
and
33 deletions
+185
-33
layout-pagedjs.css
examples/aurorae/paged-js/layout-pagedjs.css
+4
-0
chunker.js
src/chunker/chunker.js
+1
-1
parser.js
src/styles/parser.js
+2
-2
sheet.js
src/styles/sheet.js
+162
-28
styler.js
src/styles/styler.js
+16
-2
No files found.
examples/aurorae/paged-js/layout-pagedjs.css
View file @
16021617
...
...
@@ -28,6 +28,10 @@ html{
}
@page
fred
{
background-image
:
none
;
}
@page
:
first
{
margin
:
0
;
background
:
url("/examples/aurorae/images/cover.jpg")
;
...
...
src/chunker/chunker.js
View file @
16021617
...
...
@@ -3,7 +3,7 @@ import Page from "./page";
import
ContentParser
from
"
./parser
"
;
// import PagedBody from "../utils/paged-body.js";
const
MAX_SECTIONS
=
false
;
const
MAX_SECTIONS
=
1
;
const
TEMPLATE
=
`<div class="page">
<div class="top">
...
...
src/styles/parser.js
View file @
16021617
...
...
@@ -322,7 +322,7 @@ class StylesParser {
visit
:
"
TypeSelector
"
,
enter
:
(
node
,
item
,
list
)
=>
{
name
=
node
.
name
+
"
_page
"
;
name
=
node
.
name
+
"
_
named_
page
"
;
sel
.
insert
(
sel
.
createItem
({
type
:
'
ClassSelector
'
,
...
...
@@ -443,7 +443,7 @@ class StylesParser {
}
}
});
console
.
log
(
this
.
pages
);
return
csstree
.
generate
(
ast
);
}
...
...
src/styles/sheet.js
View file @
16021617
import
StylesParser
from
'
./parser.js
'
;
import
csstree
from
'
css-tree
'
;
class
Sheet
{
constructor
(
text
)
{
this
.
original
=
text
;
this
.
text
=
this
.
parse
(
text
);
this
.
add
(
this
.
text
);
}
parse
(
text
)
{
let
parser
=
new
StylesParser
(
text
);
// Add root vars
let
rootVars
=
`:root {
--width:
${
parser
.
width
}
;
--height:
${
parser
.
height
}
;
}`
;
this
.
add
(
rootVars
);
return
parser
.
text
;
}
add
(
text
){
let
head
=
document
.
querySelector
(
"
head
"
);
let
style
=
document
.
createElement
(
"
style
"
);
style
.
type
=
"
text/css
"
;
style
.
appendChild
(
document
.
createTextNode
(
text
));
head
.
appendChild
(
style
);
}
constructor
(
text
)
{
this
.
original
=
text
;
// Parse the text
this
.
ast
=
this
.
parse
(
text
);
// Remove @page rules
this
.
pages
=
this
.
removePages
(
this
.
ast
);
// this.add(this.text);
}
// parse(text) {
// let parser = new StylesParser(text);
//
// // Add root vars
// let rootVars = `:root {
// --width: ${parser.width};
// --height: ${parser.height};
// }`;
// this.add(rootVars);
//
// return parser.text;
// }
// parse
parse
(
text
)
{
// send to csstree
let
ast
=
csstree
.
parse
(
text
);
// return ast
return
ast
}
pageModel
(
name
)
{
return
{
name
:
name
,
marginalia
:
{},
width
:
undefined
,
height
:
undefined
,
margin
:
{
top
:
{
value
:
0
,
unit
:
"
px
"
},
right
:
{
value
:
0
,
unit
:
"
px
"
},
left
:
{
value
:
0
,
unit
:
"
px
"
},
bottom
:
{
value
:
0
,
unit
:
"
px
"
}
},
block
:
{},
marks
:
undefined
}
}
removePages
(
ast
)
{
let
pages
=
{};
// Find and Remove @page rules
csstree
.
walk
(
ast
,
{
visit
:
'
Atrule
'
,
enter
:
(
node
,
item
,
list
)
=>
{
const
basename
=
csstree
.
keyword
(
node
.
name
).
basename
;
if
(
basename
===
"
page
"
)
{
let
name
=
""
;
if
(
node
.
prelude
)
{
let
named
=
this
.
getTypeSelector
(
node
);
if
(
named
)
{
name
+=
named
;
}
let
psuedo
=
this
.
getPsuedoSelector
(
node
);
if
(
psuedo
)
{
name
+=
"
:
"
+
psuedo
;
}
}
else
{
name
=
"
:
"
;
}
let
page
=
this
.
pageModel
(
name
);
if
(
name
in
pages
)
{
// TODO: already present, need to merge
console
.
log
(
"
page needs merge
"
);
}
else
{
pages
[
name
]
=
page
;
}
// Remove the rule
list
.
remove
(
item
);
}
}
})
// return collection of pages
/*
{
":" : {},
":left" : {},
":right" : {},
":first" : {},
":black" : {},
"named" : {},
}
*/
console
.
log
(
pages
);
return
pages
;
}
getTypeSelector
(
ast
)
{
// Find page name
let
name
;
csstree
.
walk
(
ast
,
{
visit
:
"
TypeSelector
"
,
enter
:
(
node
,
item
,
list
)
=>
{
console
.
log
(
node
.
name
);
name
=
node
.
name
}
});
console
.
log
(
name
);
return
name
;
}
getPsuedoSelector
(
ast
)
{
// Find if it has :left & :right & :black & :first
let
name
;
csstree
.
walk
(
ast
,
{
visit
:
"
PseudoClassSelector
"
,
enter
:
(
node
,
item
,
list
)
=>
{
name
=
node
.
name
;
}
});
return
name
;
}
addPageClasses
(
pages
)
{
}
addPageResets
(
ast
)
{
}
addRootVars
(
ast
)
{
}
scope
(
ast
)
{
// Get all selector lists
// add an id
}
// generate string
toString
(
ast
)
{
return
csstree
.
generate
(
ast
||
this
.
ast
);
}
// add(text){
// let head = document.querySelector("head");
// let style = document.createElement("style");
// style.type = "text/css";
//
// style.appendChild(document.createTextNode(text));
//
// head.appendChild(style);
// }
}
...
...
src/styles/styler.js
View file @
16021617
...
...
@@ -10,8 +10,12 @@ class Styler {
return
await
fetch
(
href
)
.
then
((
response
)
=>
{
return
response
.
text
();
}).
then
((
text
)
=>
{
sheet
=
new
Sheet
(
text
);
}).
then
((
original
)
=>
{
sheet
=
new
Sheet
(
original
);
let
text
=
sheet
.
toString
();
console
.
log
(
text
);
this
.
insert
(
text
);
});
}
...
...
@@ -19,6 +23,16 @@ class Styler {
}
insert
(
text
){
let
head
=
document
.
querySelector
(
"
head
"
);
let
style
=
document
.
createElement
(
"
style
"
);
style
.
type
=
"
text/css
"
;
style
.
appendChild
(
document
.
createTextNode
(
text
));
head
.
appendChild
(
style
);
}
}
export
default
Styler
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment