resumed experiments on react/preact renderers...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-06-28 03:51:50 +03:00
parent 8d4b8d282c
commit 911615ea44
5 changed files with 178 additions and 7 deletions

View File

@ -23,6 +23,7 @@ require('features/ui')
// XXX
require('features/ui-blank-render')
require('features/ui-ribbons')
require('features/ui-preact-render')
require('features/ui-virtual-dom')
require('features/ui-react')
// XXX

View File

@ -67,18 +67,17 @@ core.ImageGridFeatures.Feature('viewer-testing', [
'keyboard',
// XXX use one...
//'ui-blank-render',
'ui-ribbons-render',
'ui-vdom-render',
'ui-react-render',
'ui-blank-render',
'ui-preact-render',
//'ui-vdom-render',
//'ui-react-render',
// features...
'ui-cursor',
'ui-single-image',
// XXX remove this... (at this point this is here only to keep load order consistent)
//'ui-partial-ribbons',
/*/ XXX has bugs -- non-current ribbons are not always aligned...
'ui-partial-ribbons-2',
'-ui-partial-ribbons',

View File

@ -0,0 +1,171 @@
/**********************************************************************
*
*
*
**********************************************************************/
((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)
(function(require){ var module={} // make module AMD/node compatible...
/*********************************************************************/
var object = require('lib/object')
var actions = require('lib/actions')
var features = require('lib/features')
var core = require('features/core')
var ribbons = require('imagegrid/ribbons')
require('ext-lib/preact')
var h = preact.h
/*********************************************************************/
var RibbonsClassPrototype = {
// XXX
}
RibbonsClassPrototype.__proto__ = ribbons.BaseRibbons.prototype.__proto__
var RibbonsPrototype = {
// XXX
}
RibbonsPrototype.__proto__ = ribbons.BaseRibbons.prototype
var Ribbons =
module.Ribbons =
object.makeConstructor('Ribbons',
RibbonsClassPrototype,
RibbonsPrototype)
/*********************************************************************/
var RenderActions = actions.Actions({
get dom(){
return this.ribbons ? this.ribbons.viewer : undefined },
load: [
function(data){
return function(){
// XXX setup .ribbons
var viewer = data.viewer
viewer = viewer == null && this.ribbons != null
? this.dom
: viewer
if(this.ribbons == null){
this.ribbons = Ribbons(viewer, this.images)
// XXX is this correct???
//this.ribbons.__image_updaters = [this.updateImage.bind(this)]
} else {
//this.ribbons.clear()
this.ribbons.images = this.images
}
this.reload()
}
}],
reload: [
function(){
// XXX
}],
refresh: [
function(){
// XXX
}],
clear: [
function(){
// XXX
}],
resizing: [
core.notUserCallable(function(unit, size, overflow){
// This is a resizing protocol root function.
//
// This will never be used directly, but will wrap protocol user
// functions.
//
// As an example see: .viewScale(..)
// XXX stop current animation...
// XXX
// XXX call .resizingDone(..) when animations done...
// XXX
})],
viewScale: ['- Zoom/',
function(scale){
if(scale == null || scale == '?'){
return // XXX get scale...
}
this.resizing.chainCall(this, function(){
// XXX set scale...
}, 'scale', scale)
}],
fitImage: ['Zoom/Fit image',
function(count, overflow){
if(count == '?'){
return // XXX get size...
}
this.resizing.chainCall(this, function(){
// XXX
}, 'screenwidth', count, overflow)
}],
fitRibbon: ['Zoom/Fit ribbon vertically',
function(count, whole){
if(count == '?'){
return // XXX get size...
}
this.resizing.chainCall(this, function(){
// XXX set size...
}, 'screenheight', count, whole)
}],
// XXX do we need updateImage here???
centerImage: ['- Interface/Center an image in ribbon horizontally',
function(target, align, offset, scale){
// XXX
}],
centerRibbon: ['- Interface/Center a ribbon vertically',
function(target){
// XXX
}],
ribbonRotation: ['- Interface|Ribbon/',
function(angle){
// XXX
}],
})
var Render =
module.Render = core.ImageGridFeatures.Feature({
title: '',
doc: '',
tag: 'ui-preact-render',
exclusive: ['ui-render'],
depends: [
// XXX
],
actions: RenderActions,
handlers: [
// XXX
],
})
/**********************************************************************
* vim:set ts=4 sw=4 : */ return module })

View File

@ -23,7 +23,7 @@
"glob": "^4.0.6",
"guarantee-events": "^1.0.0",
"ig-actions": "^3.0.0",
"ig-features": "^3.1.8",
"ig-features": "^3.1.11",
"ig-object": "^1.0.1",
"openseadragon": "^2.1.0",
"preact": "^8.1.0",

View File

@ -36,7 +36,7 @@ var requirejs_cfg = {
//'lib/keyboard': './node_modules/ig-keyboard/keyboard',
'ext-lib/preact': './node_modules/preact/dist/preact',
'ext-lib/preact': './node_modules/preact/dist/preact.dev',
},
map: {
'*': {