|
@@ -26,6 +26,73 @@ To do so in the Helios IDE change the `imports:` section of your packages which
|
|
|
Or you may add it to the `deploy.js` / `devel.js` files.
|
|
|
The former is preferred because of an easier deployment process.
|
|
|
|
|
|
+## API (class doc of class Domite)
|
|
|
+
|
|
|
+I am (hopefully thin) wrapper around the notion of "cursor in a page".
|
|
|
+I represent a DOM node _and_ a point where
|
|
|
+to insert new content into it.
|
|
|
+
|
|
|
+So I play both the role of a container that inserts
|
|
|
+as well as the role of an element being inserted.
|
|
|
+
|
|
|
+I inherit from `ProtoStream`.
|
|
|
+
|
|
|
+Creation API:
|
|
|
+
|
|
|
+ - `Domite new` creates an insertion point at the bottom of `<body>`.
|
|
|
+ - `Domite newStream` is unique way to create pieces of content. It creates an instance "floating in thin air" (wrapper around DOM DocumentFragment) that can be filled with any contents and then inserted in a page.
|
|
|
+ - `Domite fromElement: aDomElement` wraps an element and set the cursor to its end.
|
|
|
+ - `Domite newElement: 'div'` creates new `<div />` element (and returns it wrapped as a Domite).
|
|
|
+
|
|
|
+CSS selector API:
|
|
|
+
|
|
|
+ - `Domite at: aSelector` wraps an element found by `document.querySelector(aSelector)`.
|
|
|
+ - `aDomite at: aSelector` wraps an element found by `element.querySelector(aSelector)`.
|
|
|
+ - `Domite allAt: aSelector` return collection of wrapped results of `document.querySelectorAll(aSelector)`.
|
|
|
+ - `aDomite allAt: aSelector` return collection of wrapped results of `element.querySelectorAll(aSelector)`.
|
|
|
+
|
|
|
+Manipulation API:
|
|
|
+
|
|
|
+ - `aDomite << obj` inserts obj at the insertion point.
|
|
|
+ - `aDomite resetContents` deletes contents of the wrapped element.
|
|
|
+ - `aDomite cutUpTo: anotherDomite` removes contents between the two cursors (or up to the end of the receiver) and returns it collected in a wrapped DocumentFragment (IOW, you can `anotherPlace << theResult` to move the contents in the specified range).
|
|
|
+
|
|
|
+ - `aDomite attrAt: aString` returns attribute of the wrapped element or nil.
|
|
|
+ - `aDomite attrAt: aString put: anotherString` sets an attribute of the wrapped element.
|
|
|
+ - `aDomite propAt: aString` returns JS property of the wrapped element or nil.
|
|
|
+ - `aDomite propAt: aString put: anObject` sets JS property of the wrapped element.
|
|
|
+
|
|
|
+Cursor moving API:
|
|
|
+
|
|
|
+Take this sample HTML, where `[n]` are just markers, not real content:
|
|
|
+
|
|
|
+```
|
|
|
+<body>
|
|
|
+ <h1>header</h1>
|
|
|
+ [4]<p>[2]Hello[1]world[3]</p>[5]
|
|
|
+ <small>footer</small>
|
|
|
+</body>
|
|
|
+```
|
|
|
+
|
|
|
+If `d` is a `Domite` representing `[1]`, then:
|
|
|
+
|
|
|
+ - `d setToStart` would move `d` to be at `[2]`,
|
|
|
+ - `d setToEnd` would move `d` to be at `[3]`,
|
|
|
+ - `d setToBefore` would move `d` to be at `[4]`, and
|
|
|
+ - `d setToAfter` would move `d` to be at `[5]`.
|
|
|
+
|
|
|
+It is not presumed one would use `setToXxx`
|
|
|
+to actually move around in a single instance.
|
|
|
+It is envisioned this API will be used mostly
|
|
|
+in combination with `copy`, like
|
|
|
+`afterMe := self copy setToAfter`.
|
|
|
+
|
|
|
+Event API:
|
|
|
+
|
|
|
+ - `aDomite on: aString bind: [ :ev | ... ]` binds a block to process an event.
|
|
|
+ - `aDomite off: aString unbind: aBlock` unbinds the block from processing an event.
|
|
|
+ - `aDomite fire: aString [detail: anObject]` triggers a CustomEvent with specified type and, optionally, a detail object.
|
|
|
+ - `aDomite fireEvent: anEvent` triggers existing DOM Event object!
|
|
|
|
|
|
## Contributing
|
|
|
|