ipyslides 7.3.2__tar.gz → 7.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ipyslides-7.3.2 → ipyslides-7.3.3}/PKG-INFO +1 -1
- ipyslides-7.3.3/ipyslides/__version__.py +2 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/_layout.py +8 -2
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/export_template.py +3 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/slide.py +3 -2
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/static/interaction.css +3 -3
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/static/interaction.js +1 -1
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/styles.py +18 -15
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/xmd.py +1 -1
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides.egg-info/PKG-INFO +1 -1
- ipyslides-7.3.2/ipyslides/__version__.py +0 -2
- {ipyslides-7.3.2 → ipyslides-7.3.3}/LICENSE +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/README.md +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/__init__.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/__init__.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/_syntax.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/_widgets.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/base.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/export_html.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/icons.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/intro.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/navigation.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/notes.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/settings.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/static/laser.css +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/static/laser.js +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/static/notes.js +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/_base/widgets.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/core.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/dashlab.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/formatters.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/pkg_nbs/ips-demo.ipynb +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/pkg_nbs/ips-docs.ipynb +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/source.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/utils.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides/writer.py +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides.egg-info/SOURCES.txt +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides.egg-info/dependency_links.txt +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides.egg-info/requires.txt +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/ipyslides.egg-info/top_level.txt +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/setup.cfg +0 -0
- {ipyslides-7.3.2 → ipyslides-7.3.3}/setup.py +0 -0
|
@@ -48,7 +48,9 @@ def layout_css(accent_color, aspect):
|
|
|
48
48
|
},
|
|
49
49
|
},
|
|
50
50
|
".static-widget": {
|
|
51
|
-
"
|
|
51
|
+
"^, > *, .widget-html-content": {
|
|
52
|
+
"position": "static !important", # let objects flow out
|
|
53
|
+
},
|
|
52
54
|
},
|
|
53
55
|
".Warn::after": {
|
|
54
56
|
"display": "block",
|
|
@@ -131,6 +133,11 @@ def layout_css(accent_color, aspect):
|
|
|
131
133
|
"position": "absolute !important",
|
|
132
134
|
"^, .widget-html-content": {"line-height": "0 !important"},
|
|
133
135
|
"@media print": {"position": "fixed !important",},
|
|
136
|
+
"@media screen": { # avoid messing up print layout
|
|
137
|
+
"transform": "scale(min(var(--contentScale), 1)) !important", # scale footer to match content, but not more than 1
|
|
138
|
+
"transform-origin": "left bottom !important",
|
|
139
|
+
"transition": "transform 0.4s ease-in-out",
|
|
140
|
+
},
|
|
134
141
|
}, # other properties are set internally
|
|
135
142
|
"> .Build-Btn": {"visibility": "hidden !important",}, # hide build button by default
|
|
136
143
|
"^:has(.SlideArea.Stale) > .Build-Btn": {
|
|
@@ -328,7 +335,6 @@ def layout_css(accent_color, aspect):
|
|
|
328
335
|
"line-height": "1.5 !important",
|
|
329
336
|
},
|
|
330
337
|
"^, .widget-html-content": {
|
|
331
|
-
"--text-size": "14px !important",
|
|
332
338
|
"position": "static !important", # footer content should escape
|
|
333
339
|
},
|
|
334
340
|
},
|
|
@@ -94,6 +94,9 @@ section .SlideBox {
|
|
|
94
94
|
.SlidesWrapper .SlideLogo {
|
|
95
95
|
position: fixed !important;
|
|
96
96
|
line-height: 0 !important; /* suppress bad line-height here */
|
|
97
|
+
transform: scale(min(var(--contentScale), 1)) !important; /* scale footer to match content, but not more than 1 */
|
|
98
|
+
transform-origin: left bottom !important;
|
|
99
|
+
transition: transform 0.4s ease-in-out;
|
|
97
100
|
}
|
|
98
101
|
.SlidesWrapper::-webkit-scrollbar,
|
|
99
102
|
.SlidesWrapper::-webkit-scrollbar-button,
|
|
@@ -254,8 +254,8 @@ class Slide:
|
|
|
254
254
|
self._widget.clear_output(wait = True) # Clear, but don't go there
|
|
255
255
|
# Need to know how many contents before user provide content
|
|
256
256
|
with capture_content() as cap:
|
|
257
|
+
html('span', '', id = self._sec_id, css_class='Slide-UID').display() # to register section id in DOM
|
|
257
258
|
display(VBox([
|
|
258
|
-
html('span', '', id = self._sec_id, css_class='Slide-UID').as_widget(), # span to not occupy space, need to remove from frames later.
|
|
259
259
|
self._bglayer, # background image layer
|
|
260
260
|
self._ftrhtml, # dynamic footer layer
|
|
261
261
|
self._fcss, # frame separator CSS
|
|
@@ -365,7 +365,8 @@ class Slide:
|
|
|
365
365
|
|
|
366
366
|
# Next PAUSE after columns is ignored if fragments were already built from the COLUMNS output.
|
|
367
367
|
if meta.get("DELIM", "") == "PAUSE":
|
|
368
|
-
|
|
368
|
+
prev_index = index - 1 - offset # actual index in contents list
|
|
369
|
+
meta_prev = ensure_dict(contents[prev_index].metadata) if prev_index >= 0 else {}
|
|
369
370
|
if "COLUMNS" in meta_prev and get_frags(meta_prev):
|
|
370
371
|
continue
|
|
371
372
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
.ipyslides-print-node:not(.SlidesWrapper) {
|
|
23
23
|
all: unset !important;
|
|
24
|
-
display:
|
|
24
|
+
display: contents !important; /* collapse all parent nodes */
|
|
25
25
|
margin: 0 !important;
|
|
26
26
|
padding: 0 !important;
|
|
27
27
|
}
|
|
@@ -236,8 +236,8 @@
|
|
|
236
236
|
clip-path: none !important;
|
|
237
237
|
pointer-events: auto !important;
|
|
238
238
|
}
|
|
239
|
-
/* General user animations/transitions should be immediately settled to last in print mode */
|
|
240
|
-
*, *::before, *::after {
|
|
239
|
+
/* General user animations/transitions should be immediately settled to last in print mode, restrict inscope */
|
|
240
|
+
.jp-OutputArea *, .jp-OutputArea *::before, .jp-OutputArea *::after {
|
|
241
241
|
transition-duration: 0s !important;
|
|
242
242
|
transition-delay: 0s !important;
|
|
243
243
|
animation-duration: 0s !important;
|
|
@@ -635,7 +635,7 @@ function setScale(box, model) {
|
|
|
635
635
|
}
|
|
636
636
|
const pad = model.get('_fpad') || 23; // padding bottom, default 23px for footer space
|
|
637
637
|
box.style.setProperty('--contentScale',scale);
|
|
638
|
-
box.style.setProperty('--paddingBottom',Number(pad
|
|
638
|
+
box.style.setProperty('--paddingBottom',Number(pad) + "px");
|
|
639
639
|
}
|
|
640
640
|
|
|
641
641
|
function handleScale(box, model) {
|
|
@@ -384,6 +384,7 @@ def style_css(colors, fonts, layout, _root = False):
|
|
|
384
384
|
}, # Define color below at low specificity, otherwise it can overwrite code
|
|
385
385
|
},
|
|
386
386
|
'.jp-RenderedHTMLCommon :is(pre:not(.Error), code)': {'line-height': '1.5 !important','background': 'none !important'}, # Avoid a white background set by jupyter
|
|
387
|
+
'.jp-RenderedHTMLCommon > *:last-child': {'margin-bottom': '0.2em'}, # override jupyter's default bottom margin for last child
|
|
387
388
|
'^.SlidesWrapper':{
|
|
388
389
|
'container': 'slides / inline-size',
|
|
389
390
|
'margin':'auto',
|
|
@@ -420,13 +421,13 @@ def style_css(colors, fonts, layout, _root = False):
|
|
|
420
421
|
'z-index': '5',
|
|
421
422
|
'line-height': '1.5',# needs to enforce proper height in print
|
|
422
423
|
'.footer-text': {
|
|
424
|
+
'font-size': 'calc(12px * min(var(--contentScale), 1))',
|
|
423
425
|
'display': 'flex',
|
|
424
426
|
'align-items': 'center',
|
|
425
427
|
'gap': '0.5rem',
|
|
426
|
-
'padding': '0 6px', # not on top continer which has progressbar
|
|
428
|
+
'padding': '0 calc(6px * min(var(--contentScale), 1))', # not on top continer which has progressbar
|
|
427
429
|
'width': '100%',
|
|
428
430
|
'min-width': '0',
|
|
429
|
-
'font-size': '12px !important',
|
|
430
431
|
"padding-bottom": "1px !important", # a little space above progressbar
|
|
431
432
|
},
|
|
432
433
|
'.footer-text > div:first-child': {
|
|
@@ -686,7 +687,7 @@ def style_css(colors, fonts, layout, _root = False):
|
|
|
686
687
|
},
|
|
687
688
|
'dl': {
|
|
688
689
|
'display': 'grid',
|
|
689
|
-
'margin
|
|
690
|
+
'margin': '0',
|
|
690
691
|
'font-family':'var(--jp-content-font-family) !important',
|
|
691
692
|
'font-size':'var(--text-size) !important', # somwhow gets different font size
|
|
692
693
|
}, # Jupyterlab fix
|
|
@@ -829,17 +830,19 @@ def style_css(colors, fonts, layout, _root = False):
|
|
|
829
830
|
'align-items':'stretch',
|
|
830
831
|
'> *': {
|
|
831
832
|
'min-width':'0 !important', # avoid overflow due to stubborn elements
|
|
833
|
+
'height': 'stretch', # fill full height
|
|
834
|
+
':only-child:has(.column)': {
|
|
835
|
+
'display':'contents !important', # bring single nested column to parent level
|
|
836
|
+
},
|
|
837
|
+
},
|
|
838
|
+
'.column': {
|
|
839
|
+
'min-width':'0 !important', # avoid overflow due to stubborn elements
|
|
840
|
+
'height': 'stretch', # fill full height
|
|
832
841
|
},
|
|
833
842
|
'table': {'width':'calc(100% - 0.5em)'}, # make table full width inside columns with some padding
|
|
834
|
-
':only-child:has(.column), .column
|
|
835
|
-
'display': '
|
|
836
|
-
|
|
837
|
-
'flex': '1 1 100% !important',
|
|
838
|
-
'min-height': '0 !important',
|
|
839
|
-
'height': '100% !important',
|
|
840
|
-
'margin': '0 !important', # must to avoid extra space that causes overflow
|
|
841
|
-
'box-sizing': 'border-box !important',
|
|
842
|
-
}
|
|
843
|
+
':only-child:has(.column), .jp-OutputArea-output:has(.column)': {
|
|
844
|
+
'display':'contents !important', # bring single nested column to parent level
|
|
845
|
+
},
|
|
843
846
|
},
|
|
844
847
|
},
|
|
845
848
|
'code': {
|
|
@@ -968,8 +971,8 @@ def style_css(colors, fonts, layout, _root = False):
|
|
|
968
971
|
'padding-right': '0.5em',
|
|
969
972
|
'border-radius': '2px',
|
|
970
973
|
'border-left': '2px inset var(--accent-color)',
|
|
971
|
-
'margin-top': '0.
|
|
972
|
-
'margin-bottom': '0.
|
|
974
|
+
'margin-top': '0.25em',
|
|
975
|
+
'margin-bottom': '0.5em !important',
|
|
973
976
|
'background': 'hsl(from var(--bg3-color) h s l / 0.9)',
|
|
974
977
|
'^.admonition > .admonition-title': {'display':'none !important'}, # Remove admonition title
|
|
975
978
|
'^::before': {
|
|
@@ -989,9 +992,9 @@ def style_css(colors, fonts, layout, _root = False):
|
|
|
989
992
|
'--bg-color': 'var(--bg2-color)',
|
|
990
993
|
'--bg1-altcolor': r'hsl(from var(--bg-color) h 80% l)', # make table rows, text show etc align with block color
|
|
991
994
|
'border-radius': '8px',
|
|
992
|
-
'margin': '0.5em 0',
|
|
993
995
|
'background': 'hsl(from var(--bg-color) h s l / 0.7)',
|
|
994
996
|
'padding': '4px',
|
|
997
|
+
'margin-block-start': '0.2em', # avoid two blocks touching, same gap as columns
|
|
995
998
|
'^:is(ul,ol)': {'padding-left':'1.5em'} # align list inside block, same as normal lists
|
|
996
999
|
},
|
|
997
1000
|
**({
|
|
@@ -1014,7 +1014,7 @@ class XMarkdown(Markdown):
|
|
|
1014
1014
|
return self._handle_var(error('Exception', f"ipyslides is partially initialized. Cannot parse {match.group(0)!r}"))
|
|
1015
1015
|
|
|
1016
1016
|
func, ctx = _XMD_FUNCS.get(fname, _XMD_FUNCS["anyTag"])
|
|
1017
|
-
if 'anyTag' in func
|
|
1017
|
+
if 'anyTag' in getattr(func, '__name__', ''): # __name__ is not available on all types of callables
|
|
1018
1018
|
func = partial(func, fname.strip('_').lower()) # partial function for anyTag with tag name, svg_ goes to svg tag, not svg function
|
|
1019
1019
|
|
|
1020
1020
|
if ctx == "slide" and not getattr(self._slides, 'this', None): # slide only functions
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|