ll := import("@platforma-sdk/workflow-tengo:ll")
oop := import("@platforma-sdk/workflow-tengo:oop")
smart := import("@platforma-sdk/workflow-tengo:smart")
pConstants := import("@platforma-sdk/workflow-tengo:pframes.constants")
pSpec := import("@platforma-sdk/workflow-tengo:pframes.spec")
validation := import("@platforma-sdk/workflow-tengo:validation")




pFrameBuilder := func() {
	r := smart.structBuilder(pConstants.RTYPE_P_FRAME)

	self := undefined
	self = ll.toStrict(oop.inherit(r, {

		add: func(column, spec, data) {
			if (!is_undefined(spec)) {
				if !smart.isReference(spec) {
					validation.assertType(spec, pSpec.P_OBJECT_SPEC_SCHEMA)
				}
				r.createInputField(column + ".spec").setRefOrJson(spec)
			}
			if (!is_undefined(data)) {
				r.createInputField(column + ".data").setRefOrJson(data)
			}
			return self
		},

		build: func() {
			return r.lockAndBuild()
		}
	}))
	return self
}

export ll.toStrict({
	pFrameBuilder: pFrameBuilder
})
