@fluid-topics/ft-reader-context
TypeScript icon, indicating that this package has built-in type declarations

1.1.40 • Public • Published

Context block for integrated reader components. All children components with the ft-reader prefix will share the same context and interact with each other.

For example navigating using the component ft-reader-toc will change what topics the component ft-reader-content displays and topics visible in ft-reader-content will be highlighted in ft-reader-toc.

This component requires the Fluid Topics public API to be imported independently.

Install

Javascript

npm install @fluid-topics/ft-reader-context
yarn add @fluid-topics/ft-reader-context

HTML

To be placed at the end of HTML body:

<script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/dist/fluidtopics.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@fluid-topics/ft-reader-context/build/ft-reader-context.min.js"></script>

Usage

Lit

import { html } from "lit"
import "@fluid-topics/public-api/dist/fluidtopics.min.js"
import "@fluid-topics/ft-app-context"
import "@fluid-topics/ft-reader-context"
import "@fluid-topics/ft-reader-toc"
import "@fluid-topics/ft-reader-content"
import "@fluid-topics/ft-reader-topic-context"
import "@fluid-topics/ft-reader-topic-title"
import "@fluid-topics/ft-reader-topic-content"

function render() {
    return html` 
        <ft-app-context 
                baseUrl="https://doc.fluidtopics.com/"
                apiIntegrationIdentifier="custom-integration">
            <ft-reader-context mapId="MdDo16IjKjJdTxsdVYuWjA">
                <ft-reader-toc></ft-reader-toc>
                <ft-reader-content></ft-reader-content>
                <ft-reader-toc scope="current-page"></ft-reader-toc>
            </ft-reader-context> 
        </ft-app-context> 
    `
}

HTML

<html lang="en">
<head>
    <title>My custom reader</title>
</head>
<body>
    <style>
        ft-reader-context {
            display: flex;
            height: 100%;
            overflow: hidden;
            gap: 8px;
        }
    
        ft-reader-context > * {
            height: 100%;
            overflow: auto;
        }
    
        ft-reader-toc {
            flex-shrink: 0;
            flex-grow: 0;
            width: 20%;
        }
    
        ft-reader-content {
            flex-shrink: 1;
            flex-grow: 1;
        }
    
        ft-reader-toc[scope="current-page"][empty] {
            display: none;
        }
    
    </style>

    <ft-app-context
            baseUrl="<Tenant base URL>"
            apiIntegrationIdentifier="custom-integration">
        <ft-reader-context mapId="<Structured publication identifier>">
            <ft-reader-toc></ft-reader-toc>
            <ft-reader-content></ft-reader-content>
            <ft-reader-toc scope="current-page"></ft-reader-toc>
        </ft-reader-context>
    </ft-app-context>

    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/dist/fluidtopics.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-app-context/build/ft-app-context.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-reader-context/build/ft-reader-context.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-reader-toc/build/ft-reader-toc.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-reader-content/build/ft-reader-content.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-reader-topic-context/build/ft-reader-topic-context.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-reader-topic-title/build/ft-reader-topic-title.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fluid-topics/public-api/ft-reader-topic-content/build/ft-reader-topic-content.min.js"></script>
</body>
</html>

Readme

Keywords

Package Sidebar

Install

npm i @fluid-topics/ft-reader-context

Weekly Downloads

295

Version

1.1.40

License

ISC

Unpacked Size

282 kB

Total Files

28

Last publish

Collaborators

  • antidot
  • mike.antidot