FastAPI backend (Python 3.11, MSSQL ODBC for SambaPOS, Azure DI OCR),
kitchen_db on central PG. React/TS/Vite frontend with navy sidebar layout.
Backend: auth.py (APP_SLUG=kitchen, SimpleNamespace — archive routes use
.kitchen_id/.is_admin without modification), main.py (51 migrations, scheduler,
internal router for KDS bookings feed), api/internal.py, full archive API
(31 routers: invoices, recipes, menus, sambapos, resos, newbook, disputes,
purchase_orders, etc.), models, migrations, OCR pipeline.
kitchen_id pinned to 1 (B1 — single hotel).
Frontend: AuthGate (app=kitchen, token shim for archive compat — B5b pending),
Layout (navy sidebar, 6 sections, Lucide icons, teal --app-primary),
App.tsx (Outlet pattern, UploadApp outside Layout), index.css (full :root block).
strict: false — archive components have type issues; build clean.
Note: 45 archive components call fetch('/api/...') without /kitchen/ prefix
(B5b). Runtime 404s; deferred until after initial testing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
66 lines
No EOL
2.5 KiB
Markdown
66 lines
No EOL
2.5 KiB
Markdown
css-line-break
|
|
==============
|
|
|
|

|
|
[](https://www.npmjs.org/package/css-line-break)
|
|
[](https://www.npmjs.org/package/css-line-break)
|
|
|
|
A JavaScript library for Line Breaking and identifying Word Boundaries,
|
|
[implementing the Unicode Line Breaking Algorithm (UAX #14)](http://unicode.org/reports/tr14/)
|
|
|
|
>> Line breaking, also known as word wrapping, is the process of breaking a section of text into
|
|
lines such that it will fit in the available width of a page, window or other display area.
|
|
The Unicode Line Breaking Algorithm performs part of this process. Given an input text,
|
|
it produces a set of positions called "break opportunities" that are appropriate points to
|
|
begin a new line. The selection of actual line break positions from the set of break opportunities
|
|
is not covered by the Unicode Line Breaking Algorithm, but is in the domain of higher level
|
|
software with knowledge of the available width and the display size of the text.
|
|
|
|
In addition, the module implements CSS specific tailoring options to line breaking as
|
|
defined in [CSS Text Module Level 3](https://www.w3.org/TR/css-text-3/#line-breaking).
|
|
|
|
### Installing
|
|
You can install the module via npm:
|
|
|
|
npm install css-line-break
|
|
|
|
### Usage
|
|
The `LineBreaker` creates an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators) that returns `Break`s for a given text.
|
|
|
|
LineBreaker(text, [options]);
|
|
|
|
### Example
|
|
[JSFiddle](https://jsfiddle.net/ofd3752k)
|
|
```javascript
|
|
import {LineBreaker} from 'css-line-break';
|
|
|
|
const breaker = LineBreaker('Lorem ipsum lol.', {
|
|
lineBreak: 'strict',
|
|
wordBreak: 'normal'
|
|
});
|
|
|
|
const words = [];
|
|
let bk;
|
|
|
|
while (!(bk = breaker.next()).done) {
|
|
words.push(bk.value.slice());
|
|
}
|
|
|
|
assert.deepEqual(words, ['Lorem ', 'ipsum ', 'lol.']);
|
|
```
|
|
### Options
|
|
The following parameters are available for the options:
|
|
|
|
- `lineBreak`: `normal` | `strict`
|
|
- `wordBreak`: `normal` | `break-all` | `break-word` | `keep-all`
|
|
|
|
For more information how they affect the line breaking algorithms,
|
|
check out [CSS Text Module Level 3](https://www.w3.org/TR/css-text-3/#line-breaking).
|
|
|
|
### Testing
|
|
You can run the test suite with:
|
|
|
|
npm test
|
|
|
|
The library implements all the [LineBreakTest.txt tests](http://www.unicode.org/Public/10.0.0/ucd/auxiliary/LineBreakTest.txt)
|
|
and a number of CSS web-platform-tests. |