inkflow 0.1.0__py3-none-any.whl
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.
- inkflow/__init__.py +48 -0
- inkflow/animations.py +105 -0
- inkflow/bundles/presenter.css +991 -0
- inkflow/bundles/presenter.js +2487 -0
- inkflow/clean.py +72 -0
- inkflow/cli/__init__.py +19 -0
- inkflow/cli/_common.py +199 -0
- inkflow/cli/authoring.py +407 -0
- inkflow/cli/color.py +102 -0
- inkflow/cli/present.py +122 -0
- inkflow/cli/project.py +88 -0
- inkflow/cli/verify.py +89 -0
- inkflow/colors.py +335 -0
- inkflow/completions/inkflow.yaml +164 -0
- inkflow/content.py +474 -0
- inkflow/enums.py +212 -0
- inkflow/export.py +183 -0
- inkflow/fonts.py +438 -0
- inkflow/git_setup.py +190 -0
- inkflow/init.py +52 -0
- inkflow/layout.py +464 -0
- inkflow/loaders.py +95 -0
- inkflow/logging.py +238 -0
- inkflow/manifest.py +347 -0
- inkflow/markdown.py +256 -0
- inkflow/ns.py +10 -0
- inkflow/pdf.html +21 -0
- inkflow/pipeline.py +350 -0
- inkflow/presenter.html +243 -0
- inkflow/server.py +552 -0
- inkflow/svg.py +81 -0
- inkflow/svgio.py +62 -0
- inkflow/theme/icon.svg +14 -0
- inkflow/theme/layouts/base.svg +37 -0
- inkflow/theme/layouts/center.svg +42 -0
- inkflow/theme/layouts/cover.svg +43 -0
- inkflow/theme/layouts/default.svg +46 -0
- inkflow/theme/layouts/end.svg +41 -0
- inkflow/theme/layouts/fact.svg +43 -0
- inkflow/theme/layouts/media-left.svg +46 -0
- inkflow/theme/layouts/media-right.svg +46 -0
- inkflow/theme/layouts/numbered.svg +47 -0
- inkflow/theme/layouts/quote.svg +43 -0
- inkflow/theme/layouts/section.svg +42 -0
- inkflow/theme/layouts/two-cols.svg +46 -0
- inkflow/theme/showcase/deck.py +47 -0
- inkflow/theme/showcase/slides/center.md +1 -0
- inkflow/theme/showcase/slides/cover.md +4 -0
- inkflow/theme/showcase/slides/default.md +10 -0
- inkflow/theme/showcase/slides/end.md +3 -0
- inkflow/theme/showcase/slides/fact.md +5 -0
- inkflow/theme/showcase/slides/media-left.md +4 -0
- inkflow/theme/showcase/slides/media-right.md +3 -0
- inkflow/theme/showcase/slides/quote.md +5 -0
- inkflow/theme/showcase/slides/section.md +3 -0
- inkflow/theme/showcase/slides/two-cols.md +15 -0
- inkflow/theme/styles.css +623 -0
- inkflow/titles.py +17 -0
- inkflow/transitions.py +115 -0
- inkflow/tui.py +152 -0
- inkflow/verify.py +177 -0
- inkflow/zones.py +514 -0
- inkflow-0.1.0.dist-info/METADATA +155 -0
- inkflow-0.1.0.dist-info/RECORD +67 -0
- inkflow-0.1.0.dist-info/WHEEL +4 -0
- inkflow-0.1.0.dist-info/entry_points.txt +2 -0
- inkflow-0.1.0.dist-info/licenses/LICENSE +21 -0
inkflow/__init__.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from inkflow import animations, transitions
|
|
2
|
+
from inkflow.enums import (
|
|
3
|
+
Align,
|
|
4
|
+
ColorMode,
|
|
5
|
+
Direction,
|
|
6
|
+
Easing,
|
|
7
|
+
MediaAlign,
|
|
8
|
+
MediaFit,
|
|
9
|
+
Muted,
|
|
10
|
+
VAlign,
|
|
11
|
+
)
|
|
12
|
+
from inkflow.manifest import (
|
|
13
|
+
Animation,
|
|
14
|
+
Content,
|
|
15
|
+
Deck,
|
|
16
|
+
Image,
|
|
17
|
+
Inline,
|
|
18
|
+
Media,
|
|
19
|
+
Slide,
|
|
20
|
+
TextBox,
|
|
21
|
+
Transition,
|
|
22
|
+
Video,
|
|
23
|
+
ZoneContent,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
__all__ = [
|
|
27
|
+
"Align",
|
|
28
|
+
"Animation",
|
|
29
|
+
"ColorMode",
|
|
30
|
+
"Content",
|
|
31
|
+
"Deck",
|
|
32
|
+
"Direction",
|
|
33
|
+
"Easing",
|
|
34
|
+
"Image",
|
|
35
|
+
"Inline",
|
|
36
|
+
"Media",
|
|
37
|
+
"MediaAlign",
|
|
38
|
+
"MediaFit",
|
|
39
|
+
"Muted",
|
|
40
|
+
"Slide",
|
|
41
|
+
"TextBox",
|
|
42
|
+
"Transition",
|
|
43
|
+
"VAlign",
|
|
44
|
+
"Video",
|
|
45
|
+
"ZoneContent",
|
|
46
|
+
"animations",
|
|
47
|
+
"transitions",
|
|
48
|
+
]
|
inkflow/animations.py
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"""Built-in animation types for the deck DSL.
|
|
2
|
+
|
|
3
|
+
Each type is a thin subclass of ``Animation``, adding only
|
|
4
|
+
its own fields. The shared params (``duration``, ``easing``, ``delay``) and the
|
|
5
|
+
``element``/``step`` fields come from the base.
|
|
6
|
+
|
|
7
|
+
How a type maps to CSS:
|
|
8
|
+
|
|
9
|
+
- The CSS class is ``anim-<slug>``, where the slug is the kebab-cased class name
|
|
10
|
+
(``Animation.slug()``): ``FadeIn`` → ``anim-fade-in``, ``SlideIn`` →
|
|
11
|
+
``anim-slide-in``, ``Highlight`` → ``anim-highlight``. Defining a new type is
|
|
12
|
+
"add a subclass here + write a matching CSS rule," nothing else.
|
|
13
|
+
- Continuous params become ``--anim-<field>`` custom properties on the element.
|
|
14
|
+
- Discrete params that CSS cannot branch on by value become modifier classes —
|
|
15
|
+
currently ``direction`` → ``anim-from-{direction}``.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
from dataclasses import dataclass, field
|
|
21
|
+
|
|
22
|
+
from inkflow.enums import Direction, Easing
|
|
23
|
+
from inkflow.manifest import Animation
|
|
24
|
+
|
|
25
|
+
__all__ = [
|
|
26
|
+
"Bounce",
|
|
27
|
+
"FadeIn",
|
|
28
|
+
"FadeOut",
|
|
29
|
+
"Highlight",
|
|
30
|
+
"SlideIn",
|
|
31
|
+
"SlideOut",
|
|
32
|
+
"ZoomIn",
|
|
33
|
+
"ZoomOut",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@dataclass
|
|
38
|
+
class FadeIn(Animation):
|
|
39
|
+
"""Element starts hidden, fades in on its step."""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass
|
|
43
|
+
class FadeOut(Animation):
|
|
44
|
+
"""Element starts visible, fades out on its step."""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass
|
|
48
|
+
class Bounce(Animation):
|
|
49
|
+
"""Element starts hidden, appears with a scale-pulse bounce on its step."""
|
|
50
|
+
|
|
51
|
+
duration: float = field(default=0.35, kw_only=True)
|
|
52
|
+
"""Duration in seconds."""
|
|
53
|
+
overshoot: Easing = field(
|
|
54
|
+
default=Easing.cubic_bezier(0.34, 1.56, 0.64, 1), kw_only=True
|
|
55
|
+
)
|
|
56
|
+
"""Easing for the translate axis — the overshoot that gives the bounce its
|
|
57
|
+
spring. Independent of the opacity-axis ``easing``."""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@dataclass
|
|
61
|
+
class SlideIn(Animation):
|
|
62
|
+
"""Element slides in from an edge, fading as it arrives."""
|
|
63
|
+
|
|
64
|
+
direction: Direction = Direction.LEFT
|
|
65
|
+
"""Edge the element slides in from."""
|
|
66
|
+
distance: float = 60.0
|
|
67
|
+
"""Travel distance in SVG user units."""
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@dataclass
|
|
71
|
+
class SlideOut(Animation):
|
|
72
|
+
"""Element slides out toward an edge, fading as it leaves."""
|
|
73
|
+
|
|
74
|
+
direction: Direction = Direction.LEFT
|
|
75
|
+
"""Edge the element slides out toward."""
|
|
76
|
+
distance: float = 60.0
|
|
77
|
+
"""Travel distance in SVG user units."""
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@dataclass
|
|
81
|
+
class ZoomIn(Animation):
|
|
82
|
+
"""Element scales up into place from ``scale``."""
|
|
83
|
+
|
|
84
|
+
scale: float = 0.8
|
|
85
|
+
"""Starting scale, e.g. ``0.6``."""
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@dataclass
|
|
89
|
+
class ZoomOut(Animation):
|
|
90
|
+
"""Element scales down out of place toward ``scale``."""
|
|
91
|
+
|
|
92
|
+
scale: float = 0.8
|
|
93
|
+
"""Ending scale."""
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
@dataclass
|
|
97
|
+
class Highlight(Animation):
|
|
98
|
+
"""Pulse the element ``passes`` times without hiding it."""
|
|
99
|
+
|
|
100
|
+
duration: float = field(default=0.6, kw_only=True)
|
|
101
|
+
"""Duration of one pulse in seconds."""
|
|
102
|
+
color: str = "var(--accent)"
|
|
103
|
+
"""Glow color (any CSS color or theme token)."""
|
|
104
|
+
passes: int = 1
|
|
105
|
+
"""Number of pulses."""
|