mirror of https://github.com/anoshenko/rui.git
				
				
				
			Bug fixing
This commit is contained in:
		
							parent
							
								
									7bb4da32bf
								
							
						
					
					
						commit
						d3002ced0e
					
				|  | @ -72,7 +72,7 @@ | |||
| # v0.2.0 | ||||
| 
 | ||||
| * Added "animation" and "transition" properties, Animation interface, animation events | ||||
| * Renamed ColorPropery constant to ColorTag | ||||
| * Renamed ColorProperty constant to ColorTag | ||||
| * Updated readme | ||||
| * Added the Animation example to the demo | ||||
| * Bug fixing | ||||
|  |  | |||
|  | @ -85,7 +85,7 @@ const ( | |||
| 	LinearTiming = "linear" | ||||
| ) | ||||
| 
 | ||||
| // StepsTiming return a timing function along stepCount stops along the transition, diplaying each stop for equal lengths of time
 | ||||
| // StepsTiming return a timing function along stepCount stops along the transition, displaying each stop for equal lengths of time
 | ||||
| func StepsTiming(stepCount int) string { | ||||
| 	return "steps(" + strconv.Itoa(stepCount) + ")" | ||||
| } | ||||
|  | @ -130,7 +130,7 @@ type Animation interface { | |||
| 	writeTransitionString(tag string, buffer *strings.Builder) | ||||
| 	animationCSS(session Session) string | ||||
| 	transitionCSS(buffer *strings.Builder, session Session) | ||||
| 	hasAnimatedPropery() bool | ||||
| 	hasAnimatedProperty() bool | ||||
| 	animationName() string | ||||
| } | ||||
| 
 | ||||
|  | @ -160,7 +160,7 @@ func NewAnimation(params Params) Animation { | |||
| 	return animation | ||||
| } | ||||
| 
 | ||||
| func (animation *animationData) hasAnimatedPropery() bool { | ||||
| func (animation *animationData) hasAnimatedProperty() bool { | ||||
| 	props := animation.getRaw(PropertyTag) | ||||
| 	if props == nil { | ||||
| 		ErrorLog("There are no animated properties.") | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ const ( | |||
| 	AnimationStartEvent = "animation-start-event" | ||||
| 
 | ||||
| 	// AnimationEndEvent is the constant for "animation-end-event" property tag.
 | ||||
| 	// The "animation-end-event" is fired when aт фnimation has completed.
 | ||||
| 	// The "animation-end-event" is fired when an animation has completed.
 | ||||
| 	// If the animation aborts before reaching completion, such as if the element is removed
 | ||||
| 	// or the animation is removed from the element, the "animation-end-event" is not fired.
 | ||||
| 	AnimationEndEvent = "animation-end-event" | ||||
|  | @ -46,7 +46,7 @@ const ( | |||
| 
 | ||||
| 	// AnimationIterationEvent is the constant for "animation-iteration-event" property tag.
 | ||||
| 	// The "animation-iteration-event" is fired when an iteration of an animation ends,
 | ||||
| 	// and another one begins. This event does not occur at the same time as the animationend event,
 | ||||
| 	// and another one begins. This event does not occur at the same time as the animation end event,
 | ||||
| 	// and therefore does not occur for animations with an "iteration-count" of one.
 | ||||
| 	AnimationIterationEvent = "animation-iteration-event" | ||||
| ) | ||||
|  |  | |||
|  | @ -1339,7 +1339,7 @@ function mediaSetVolume(elementId, volume) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| function startDowndload(url, filename) { | ||||
| function startDownload(url, filename) { | ||||
| 	var element = document.getElementById("ruiDownloader"); | ||||
| 	if (element) { | ||||
| 		element.href = url; | ||||
|  |  | |||
|  | @ -209,7 +209,7 @@ func (gradient *backgroundConicGradient) parseGradientText(value string) []Backg | |||
| 	for i, element := range elements { | ||||
| 		var ok bool | ||||
| 		if vector[i], ok = gradient.stringToGradientPoint(strings.Trim(element, " ")); !ok { | ||||
| 			ErrorLogF(`Ivalid %d element of the conic gradient: "%s"`, i, element) | ||||
| 			ErrorLogF(`Invalid %d element of the conic gradient: "%s"`, i, element) | ||||
| 			return nil | ||||
| 		} | ||||
| 	} | ||||
|  | @ -240,7 +240,7 @@ func (gradient *backgroundConicGradient) setGradient(value any) bool { | |||
| 			return true | ||||
| 		} | ||||
| 
 | ||||
| 		ErrorLogF(`Ivalid conic gradient: "%s"`, value) | ||||
| 		ErrorLogF(`Invalid conic gradient: "%s"`, value) | ||||
| 		return false | ||||
| 
 | ||||
| 	case []BackgroundGradientAngle: | ||||
|  | @ -252,7 +252,7 @@ func (gradient *backgroundConicGradient) setGradient(value any) bool { | |||
| 
 | ||||
| 		for i, point := range value { | ||||
| 			if point.Color == nil { | ||||
| 				ErrorLogF("Ivalid %d element of the conic gradient: Color is nil", i) | ||||
| 				ErrorLogF("Invalid %d element of the conic gradient: Color is nil", i) | ||||
| 				return false | ||||
| 			} | ||||
| 		} | ||||
|  |  | |||
|  | @ -99,7 +99,7 @@ func (gradient *backgroundGradient) parseGradientText(value string) []Background | |||
| 	points := make([]BackgroundGradientPoint, count) | ||||
| 	for i, element := range elements { | ||||
| 		if !points[i].setValue(element) { | ||||
| 			ErrorLogF(`Ivalid %d element of the conic gradient: "%s"`, i, element) | ||||
| 			ErrorLogF(`Invalid %d element of the conic gradient: "%s"`, i, element) | ||||
| 			return nil | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
|  | @ -182,7 +182,7 @@ type Canvas interface { | |||
| 	SetRadialGradientStrokeStyle(x0, y0, r0 float64, color0 Color, x1, y1, r1 float64, color1 Color, stopPoints []GradientPoint) | ||||
| 
 | ||||
| 	// SetImageFillStyle set the image as the filling pattern.
 | ||||
| 	//   repeate - indicating how to repeat the pattern's image. Possible values are:
 | ||||
| 	//   repeat - indicating how to repeat the pattern's image. Possible values are:
 | ||||
| 	//     NoRepeat (0) - neither direction,
 | ||||
| 	//     RepeatXY (1) - both directions,
 | ||||
| 	//     RepeatX (2) - horizontal only,
 | ||||
|  | @ -286,7 +286,7 @@ type Canvas interface { | |||
| 	DrawImage(x, y float64, image Image) | ||||
| 	// DrawImageInRect draws the image in the rectangle (x, y, width, height), scaling in height and width if necessary
 | ||||
| 	DrawImageInRect(x, y, width, height float64, image Image) | ||||
| 	// DrawImageFragment draws the frament (described by srcX, srcY, srcWidth, srcHeight) of image
 | ||||
| 	// DrawImageFragment draws the fragment (described by srcX, srcY, srcWidth, srcHeight) of image
 | ||||
| 	// in the rectangle (dstX, dstY, dstWidth, dstHeight), scaling in height and width if necessary
 | ||||
| 	DrawImageFragment(srcX, srcY, srcWidth, srcHeight, dstX, dstY, dstWidth, dstHeight float64, image Image) | ||||
| 
 | ||||
|  | @ -302,12 +302,12 @@ func newCanvas(view CanvasView) Canvas { | |||
| 	canvas := new(canvasData) | ||||
| 	canvas.view = view | ||||
| 	canvas.session = view.Session() | ||||
| 	canvas.session.cavnasStart(view.htmlID()) | ||||
| 	canvas.session.canvasStart(view.htmlID()) | ||||
| 	return canvas | ||||
| } | ||||
| 
 | ||||
| func (canvas *canvasData) finishDraw() { | ||||
| 	canvas.session.cavnasFinish() | ||||
| 	canvas.session.canvasFinish() | ||||
| } | ||||
| 
 | ||||
| func (canvas *canvasData) View() CanvasView { | ||||
|  |  | |||
|  | @ -55,8 +55,8 @@ const ( | |||
| 	BlueViolet Color = 0xff8a2be2 | ||||
| 	// Brown color constant
 | ||||
| 	Brown Color = 0xffa52a2a | ||||
| 	// Burlywood color constant
 | ||||
| 	Burlywood Color = 0xffdeb887 | ||||
| 	// BurlyWood color constant
 | ||||
| 	BurlyWood Color = 0xffdeb887 | ||||
| 	// CadetBlue color constant
 | ||||
| 	CadetBlue Color = 0xff5f9ea0 | ||||
| 	// Chartreuse color constant
 | ||||
|  | @ -67,8 +67,8 @@ const ( | |||
| 	Coral Color = 0xffff7f50 | ||||
| 	// CornflowerBlue color constant
 | ||||
| 	CornflowerBlue Color = 0xff6495ed | ||||
| 	// Cornsilk color constant
 | ||||
| 	Cornsilk Color = 0xfffff8dc | ||||
| 	// CornSilk color constant
 | ||||
| 	CornSilk Color = 0xfffff8dc | ||||
| 	// Crimson color constant
 | ||||
| 	Crimson Color = 0xffdc143c | ||||
| 	// Cyan color constant
 | ||||
|  | @ -105,8 +105,8 @@ const ( | |||
| 	DarkSlateBlue Color = 0xff483d8b | ||||
| 	// DarkSlateGray color constant
 | ||||
| 	DarkSlateGray Color = 0xff2f4f4f | ||||
| 	// Darkslategrey color constant
 | ||||
| 	Darkslategrey Color = 0xff2f4f4f | ||||
| 	// DarkSlateGrey color constant
 | ||||
| 	DarkSlateGrey Color = 0xff2f4f4f | ||||
| 	// DarkTurquoise color constant
 | ||||
| 	DarkTurquoise Color = 0xff00ced1 | ||||
| 	// DarkViolet color constant
 | ||||
|  | @ -135,8 +135,8 @@ const ( | |||
| 	Gold Color = 0xffffd700 | ||||
| 	// GoldenRod color constant
 | ||||
| 	GoldenRod Color = 0xffdaa520 | ||||
| 	// GreenyEllow color constant
 | ||||
| 	GreenyEllow Color = 0xffadff2f | ||||
| 	// GreenYellow color constant
 | ||||
| 	GreenYellow Color = 0xffadff2f | ||||
| 	// Grey color constant
 | ||||
| 	Grey Color = 0xff808080 | ||||
| 	// Honeydew color constant
 | ||||
|  | @ -293,8 +293,8 @@ const ( | |||
| 	Violet Color = 0xffee82ee | ||||
| 	// Wheat color constant
 | ||||
| 	Wheat Color = 0xfff5deb3 | ||||
| 	// Whitesmoke color constant
 | ||||
| 	Whitesmoke Color = 0xfff5f5f5 | ||||
| 	// WhiteSmoke color constant
 | ||||
| 	WhiteSmoke Color = 0xfff5f5f5 | ||||
| 	// YellowGreen color constant
 | ||||
| 	YellowGreen Color = 0xff9acd32 | ||||
| ) | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ func (session *sessionData) startDownload(file downloadFile) { | |||
| 	currentDownloadId++ | ||||
| 	id := strconv.Itoa(currentDownloadId) | ||||
| 	downloadFiles[id] = file | ||||
| 	session.callFunc("startDowndload", id, file.filename) | ||||
| 	session.callFunc("startDownload", id, file.filename) | ||||
| } | ||||
| 
 | ||||
| func serveDownloadFile(id string, w http.ResponseWriter, r *http.Request) bool { | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ const ( | |||
| 	PasswordText = 1 | ||||
| 	// EmailText - e-mail type of EditView. Allows to enter one email
 | ||||
| 	EmailText = 2 | ||||
| 	// EmailsText - e-mail type of EditView. Allows to enter multiple emails separeted by comma
 | ||||
| 	// EmailsText - e-mail type of EditView. Allows to enter multiple emails separated by comma
 | ||||
| 	EmailsText = 3 | ||||
| 	// URLText - url type of EditView. Allows to enter one url
 | ||||
| 	URLText = 4 | ||||
|  | @ -531,7 +531,7 @@ func GetHint(view View, subviewID ...string) string { | |||
| 	return "" | ||||
| } | ||||
| 
 | ||||
| // GetMaxLength returns a maximal lenght of EditView. If a maximal lenght is not limited  then 0 is returned
 | ||||
| // GetMaxLength returns a maximal length of EditView. If a maximal length is not limited  then 0 is returned
 | ||||
| // If the second argument (subviewID) is not specified or it is "" then a value of the first argument (view) is returned.
 | ||||
| func GetMaxLength(view View, subviewID ...string) int { | ||||
| 	return intStyledProperty(view, subviewID, MaxLength, 0) | ||||
|  | @ -604,7 +604,7 @@ func AppendEditText(view View, subviewID string, text string) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // GetCaretColor returns the color of the text input carret.
 | ||||
| // GetCaretColor returns the color of the text input caret.
 | ||||
| // If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
 | ||||
| func GetCaretColor(view View, subviewID ...string) Color { | ||||
| 	return colorStyledProperty(view, subviewID, CaretColor, false) | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ const ( | |||
| // ListView - the list view interface
 | ||||
| type ListView interface { | ||||
| 	View | ||||
| 	ParanetView | ||||
| 	ParentView | ||||
| 	// ReloadListViewData updates ListView content
 | ||||
| 	ReloadListViewData() | ||||
| 
 | ||||
|  |  | |||
|  | @ -421,7 +421,7 @@ const ( | |||
| 	// This is an inherited property, i.e. if it is not defined, then the value of the parent view is used.
 | ||||
| 	VerticalTextOrientation = "vertical-text-orientation" | ||||
| 
 | ||||
| 	// TextTverflow is the constant for the "text-overflow" property tag.
 | ||||
| 	// TextOverflow is the constant for the "text-overflow" property tag.
 | ||||
| 	// The "text-overflow" int property sets how hidden overflow content is signaled to users.
 | ||||
| 	// It can be clipped or display an ellipsis ('…'). Valid values are
 | ||||
| 	TextOverflow = "text-overflow" | ||||
|  | @ -538,7 +538,7 @@ const ( | |||
| 
 | ||||
| 	// AvoidBreak is the constant for the "avoid-break" property tag.
 | ||||
| 	// The "avoid-break" bool property sets how region breaks should behave inside a generated box.
 | ||||
| 	// If the property value is "true" then fvoids any break from being inserted within the principal box.
 | ||||
| 	// If the property value is "true" then avoids any break from being inserted within the principal box.
 | ||||
| 	// If the property value is "false" then allows, but does not force, any break to be inserted within
 | ||||
| 	// the principal box.
 | ||||
| 	AvoidBreak = "avoid-break" | ||||
|  | @ -656,7 +656,7 @@ const ( | |||
| 	// allowing text and inline Views to wrap around it.
 | ||||
| 	Float = "float" | ||||
| 
 | ||||
| 	// UsetData is the constant for the "user-data" property tag.
 | ||||
| 	// UserData is the constant for the "user-data" property tag.
 | ||||
| 	// The "user-data" property can contain any user data
 | ||||
| 	UserData = "user-data" | ||||
| 
 | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ const ( | |||
| // Resizable - grid-container of View
 | ||||
| type Resizable interface { | ||||
| 	View | ||||
| 	ParanetView | ||||
| 	ParentView | ||||
| } | ||||
| 
 | ||||
| type resizableData struct { | ||||
|  |  | |||
							
								
								
									
										22
									
								
								session.go
								
								
								
								
							
							
						
						
									
										22
									
								
								session.go
								
								
								
								
							|  | @ -20,13 +20,13 @@ type webBridge interface { | |||
| 	writeMessage(text string) bool | ||||
| 	addAnimationCSS(css string) | ||||
| 	clearAnimation() | ||||
| 	cavnasStart(htmlID string) | ||||
| 	canvasStart(htmlID string) | ||||
| 	callCanvasFunc(funcName string, args ...any) | ||||
| 	callCanvasVarFunc(v any, funcName string, args ...any) | ||||
| 	callCanvasImageFunc(url string, property string, funcName string, args ...any) | ||||
| 	createCanvasVar(funcName string, args ...any) any | ||||
| 	updateCanvasProperty(property string, value any) | ||||
| 	cavnasFinish() | ||||
| 	canvasFinish() | ||||
| 	canvasTextMetrics(htmlID, font, text string) TextMetrics | ||||
| 	htmlPropertyValue(htmlID, name string) string | ||||
| 	answerReceived(answer DataObject) | ||||
|  | @ -125,13 +125,13 @@ type Session interface { | |||
| 	finishUpdateScript(htmlID string) | ||||
| 	addAnimationCSS(css string) | ||||
| 	clearAnimation() | ||||
| 	cavnasStart(htmlID string) | ||||
| 	canvasStart(htmlID string) | ||||
| 	callCanvasFunc(funcName string, args ...any) | ||||
| 	createCanvasVar(funcName string, args ...any) any | ||||
| 	callCanvasVarFunc(v any, funcName string, args ...any) | ||||
| 	callCanvasImageFunc(url string, property string, funcName string, args ...any) | ||||
| 	updateCanvasProperty(property string, value any) | ||||
| 	cavnasFinish() | ||||
| 	canvasFinish() | ||||
| 	canvasTextMetrics(htmlID, font, text string) TextMetrics | ||||
| 	htmlPropertyValue(htmlID, name string) string | ||||
| 	handleAnswer(data DataObject) | ||||
|  | @ -290,7 +290,11 @@ func (session *sessionData) writeInitScript(writer *strings.Builder) { | |||
| 
 | ||||
| 	if session.rootView != nil { | ||||
| 		writer.WriteString(`document.getElementById('ruiRootView').innerHTML = '`) | ||||
| 		viewHTML(session.rootView, writer) | ||||
| 		buffer := allocStringBuilder() | ||||
| 		defer freeStringBuilder(buffer) | ||||
| 		viewHTML(session.rootView, buffer) | ||||
| 		text := strings.ReplaceAll(buffer.String(), "'", `\'`) | ||||
| 		writer.WriteString(text) | ||||
| 		writer.WriteString("';\nscanElementsSize();") | ||||
| 	} | ||||
| } | ||||
|  | @ -424,9 +428,9 @@ func (session *sessionData) clearAnimation() { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (session *sessionData) cavnasStart(htmlID string) { | ||||
| func (session *sessionData) canvasStart(htmlID string) { | ||||
| 	if session.bridge != nil { | ||||
| 		session.bridge.cavnasStart(htmlID) | ||||
| 		session.bridge.canvasStart(htmlID) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -461,9 +465,9 @@ func (session *sessionData) callCanvasImageFunc(url string, property string, fun | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (session *sessionData) cavnasFinish() { | ||||
| func (session *sessionData) canvasFinish() { | ||||
| 	if session.bridge != nil { | ||||
| 		session.bridge.cavnasFinish() | ||||
| 		session.bridge.canvasFinish() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ func viewByHTMLID(id string, startView View) View { | |||
| 		if startView.htmlID() == id { | ||||
| 			return startView | ||||
| 		} | ||||
| 		if container, ok := startView.(ParanetView); ok { | ||||
| 		if container, ok := startView.(ParentView); ok { | ||||
| 			for _, view := range container.Views() { | ||||
| 				if view != nil { | ||||
| 					if v := viewByHTMLID(id, view); v != nil { | ||||
|  |  | |||
|  | @ -104,7 +104,7 @@ func (data *sizeFuncData) parseArgs(args []any, allowNumber bool) bool { | |||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		ErrorLogF(`The %s function argument cann't be a number`, data.tag) | ||||
| 		ErrorLogF(`The %s function argument can't be a number`, data.tag) | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -218,7 +218,7 @@ type CellIndex struct { | |||
| // TableView - text View
 | ||||
| type TableView interface { | ||||
| 	View | ||||
| 	ParanetView | ||||
| 	ParentView | ||||
| 	ReloadTableData() | ||||
| 	CellFrame(row, column int) Frame | ||||
| 
 | ||||
|  |  | |||
|  | @ -94,7 +94,7 @@ func GetTableSelectionMode(view View, subviewID ...string) int { | |||
| 	return enumStyledProperty(view, subviewID, SelectionMode, NoneSelection, false) | ||||
| } | ||||
| 
 | ||||
| // GetTableVerticalAlign returns a vertical align in a TavleView cell. Returns one of next values:
 | ||||
| // GetTableVerticalAlign returns a vertical align in a TableView cell. Returns one of next values:
 | ||||
| // TopAlign (0), BottomAlign (1), CenterAlign (2), and BaselineAlign (3)
 | ||||
| // If the second argument (subviewID) is not specified or it is "" then a value from the first argument (view) is returned.
 | ||||
| func GetTableVerticalAlign(view View, subviewID ...string) int { | ||||
|  |  | |||
							
								
								
									
										2
									
								
								view.go
								
								
								
								
							
							
						
						
									
										2
									
								
								view.go
								
								
								
								
							|  | @ -45,7 +45,7 @@ type View interface { | |||
| 	Focusable() bool | ||||
| 	// Frame returns the location and size of the view in pixels
 | ||||
| 	Frame() Frame | ||||
| 	// Scroll returns the location size of the scrolable view in pixels
 | ||||
| 	// Scroll returns the location size of the scrollable view in pixels
 | ||||
| 	Scroll() Frame | ||||
| 	// SetAnimated sets the value (second argument) of the property with name defined by the first argument.
 | ||||
| 	// Return "true" if the value has been set, in the opposite case "false" are returned and
 | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ func ViewByID(rootView View, id string) View { | |||
| 		return rootView | ||||
| 	} | ||||
| 
 | ||||
| 	if container, ok := rootView.(ParanetView); ok { | ||||
| 	if container, ok := rootView.(ParentView); ok { | ||||
| 		if view := viewByID(container, id); view != nil { | ||||
| 			return view | ||||
| 		} | ||||
|  | @ -32,13 +32,13 @@ func ViewByID(rootView View, id string) View { | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func viewByID(rootView ParanetView, id string) View { | ||||
| func viewByID(rootView ParentView, id string) View { | ||||
| 	for _, view := range rootView.Views() { | ||||
| 		if view != nil { | ||||
| 			if view.ID() == id { | ||||
| 				return view | ||||
| 			} | ||||
| 			if container, ok := view.(ParanetView); ok { | ||||
| 			if container, ok := view.(ParentView); ok { | ||||
| 				if v := viewByID(container, id); v != nil { | ||||
| 					return v | ||||
| 				} | ||||
|  |  | |||
|  | @ -338,7 +338,7 @@ func (style *viewStyle) set(tag string, value any) bool { | |||
| 			return true | ||||
| 
 | ||||
| 		case DataObject: | ||||
| 			if animation := parseAnimation(value); animation.hasAnimatedPropery() { | ||||
| 			if animation := parseAnimation(value); animation.hasAnimatedProperty() { | ||||
| 				style.properties[tag] = []Animation{animation} | ||||
| 				return true | ||||
| 			} | ||||
|  | @ -348,7 +348,7 @@ func (style *viewStyle) set(tag string, value any) bool { | |||
| 			result := true | ||||
| 			for i := 0; i < value.ArraySize(); i++ { | ||||
| 				if obj := value.ArrayElement(i).Object(); obj != nil { | ||||
| 					if anim := parseAnimation(obj); anim.hasAnimatedPropery() { | ||||
| 					if anim := parseAnimation(obj); anim.hasAnimatedProperty() { | ||||
| 						animations = append(animations, anim) | ||||
| 					} else { | ||||
| 						result = false | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ package rui | |||
| 
 | ||||
| import "strings" | ||||
| 
 | ||||
| type ParanetView interface { | ||||
| type ParentView interface { | ||||
| 	// Views return a list of child views
 | ||||
| 	Views() []View | ||||
| } | ||||
|  | @ -10,7 +10,7 @@ type ParanetView interface { | |||
| // ViewsContainer - mutable list-container of Views
 | ||||
| type ViewsContainer interface { | ||||
| 	View | ||||
| 	ParanetView | ||||
| 	ParentView | ||||
| 	// Append appends a view to the end of the list of a view children
 | ||||
| 	Append(view View) | ||||
| 	// Insert inserts a view to the "index" position in the list of a view children
 | ||||
|  |  | |||
|  | @ -135,7 +135,7 @@ func (bridge *wasmBridge) clearAnimation() { | |||
| 	styles.Set("textContent", "") | ||||
| } | ||||
| 
 | ||||
| func (bridge *wasmBridge) cavnasStart(htmlID string) { | ||||
| func (bridge *wasmBridge) canvasStart(htmlID string) { | ||||
| 	if ProtocolInDebugLog { | ||||
| 		DebugLog("const ctx = document.getElementById('" + htmlID + "'elementId').getContext('2d');\nctx.save();") | ||||
| 	} | ||||
|  | @ -204,7 +204,7 @@ func (bridge *wasmBridge) updateCanvasProperty(property string, value any) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (bridge *wasmBridge) cavnasFinish() { | ||||
| func (bridge *wasmBridge) canvasFinish() { | ||||
| 	if !bridge.canvas.IsNull() { | ||||
| 		DebugLog("ctx.restore()") | ||||
| 		bridge.canvas.Call("restore") | ||||
|  |  | |||
|  | @ -146,7 +146,7 @@ func (bridge *wsBridge) argToString(arg any) (string, bool) { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	ErrorLog("Unsupported agument type") | ||||
| 	ErrorLog("Unsupported argument type") | ||||
| 	return "", false | ||||
| } | ||||
| 
 | ||||
|  | @ -238,7 +238,7 @@ if (styles) { | |||
| }`) | ||||
| } | ||||
| 
 | ||||
| func (bridge *wsBridge) cavnasStart(htmlID string) { | ||||
| func (bridge *wsBridge) canvasStart(htmlID string) { | ||||
| 	bridge.canvasBuffer.Reset() | ||||
| 	bridge.canvasBuffer.WriteString(`const ctx = getCanvasContext('`) | ||||
| 	bridge.canvasBuffer.WriteString(htmlID) | ||||
|  | @ -328,7 +328,7 @@ func (bridge *wsBridge) callCanvasImageFunc(url string, property string, funcNam | |||
| 	bridge.canvasBuffer.WriteString(");\n}") | ||||
| } | ||||
| 
 | ||||
| func (bridge *wsBridge) cavnasFinish() { | ||||
| func (bridge *wsBridge) canvasFinish() { | ||||
| 	bridge.canvasBuffer.WriteString("\n") | ||||
| 	script := bridge.canvasBuffer.String() | ||||
| 	if ProtocolInDebugLog { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue